

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 對 AWS CodeBuild 沙盒 SSH 連線問題進行故障診斷
<a name="sandbox-troubleshooting"></a>

使用本主題中的資訊來協助您識別、診斷和解決 CodeBuild 沙盒 SSH 連線問題。

**Topics**
+ [`StartSandboxConnection` `InvalidInputException` SSH 進入 CodeBuild 沙盒環境時發生錯誤](#sandbox-troubleshooting.invalid-input)
+ [錯誤：當 SSH 進入 CodeBuild 沙盒環境時，「找不到登入資料」](#sandbox-troubleshooting.credentials)
+ [`StartSandboxConnection` `AccessDeniedException` SSH 進入 CodeBuild 沙盒環境時發生錯誤](#sandbox-troubleshooting.access-denied)
+ [錯誤：當 SSH 進入 CodeBuild 沙盒環境時，「ssh：無法解析主機名稱」](#sandbox-troubleshooting.hostname)

## `StartSandboxConnection` `InvalidInputException` SSH 進入 CodeBuild 沙盒環境時發生錯誤
<a name="sandbox-troubleshooting.invalid-input"></a>

**問題：**嘗試使用命令 連線至 CodeBuild 沙盒環境時`ssh codebuild-sandbox-ssh=<sandbox-arn>`，您可能會遇到`InvalidInputException`錯誤，例如：

```
An error occurred (InvalidInputException) when calling the StartSandboxConnection 
operation: Failed to start SSM session for {sandbox-arn}
User: arn:aws:sts::<account-ID>:assumed-role/<service-role-name>/AWSCodeBuild-<UUID> 
is not authorized to perform: ssm:StartSession on resource.
```

```
An error occurred (InvalidInputException) when calling the StartSandboxConnection 
operation: Failed to start SSM session for 
sandbox <sandbox-arn>: codebuild:<UUID> is not connected.
```

**可能原因：**
+ 缺少 Amazon EC2 Systems Manager 代理程式：建置映像未正確安裝或設定 SSM 代理程式。
+ 許可不足：CodeBuild 專案服務角色缺少必要的 SSM 許可。

**建議的解決方案：**如果您使用建置的自訂映像，請執行下列動作。

1. 安裝 SSM Agent。如需詳細資訊，請參閱《》中的在 [ Linux 的 Amazon EC2 執行個體上手動安裝和解除安裝 SSM 代理](https://docs.aws.amazon.com/systems-manager/latest/userguide/manually-install-ssm-agent-linux.html)程式**。SSM Agent 版本必須為 `3.0.1295.0`或更新版本。

1. 將檔案 [ https://github.com/aws/aws-codebuild-docker-images/blob/master/ubuntu/standard/7.0/amazon-ssm-agent.json](https://github.com/aws/aws-codebuild-docker-images/blob/master/ubuntu/standard/7.0/amazon-ssm-agent.json) 複製到映像中的 `/etc/amazon/ssm/` 目錄。這會在 SSM 代理程式中啟用**容器模式**。

1. 確保您的 CodeBuild 專案的服務角色具有下列許可，然後重新啟動沙盒環境：

   ```
   {
      "Effect": "Allow",
         "Action": [
            "ssmmessages:CreateControlChannel",
            "ssmmessages:CreateDataChannel",
            "ssmmessages:OpenControlChannel",
            "ssmmessages:OpenDataChannel"
         ],
         "Resource": "*"
    },
    {
       "Effect": "Allow",
       "Action": [
          "ssm:StartSession"
        ],
        "Resource": [
           "arn:aws:codebuild:region:account-id:build/*",
           "arn:aws:ssm:region::document/AWS-StartSSHSession"
        ]
    }
   ```

## 錯誤：當 SSH 進入 CodeBuild 沙盒環境時，「找不到登入資料」
<a name="sandbox-troubleshooting.credentials"></a>

**問題：**嘗試使用命令 連線至 CodeBuild 沙盒環境時`ssh codebuild-sandbox-ssh=<sandbox-arn>`，您可能會遇到下列登入資料錯誤：

```
Unable to locate credentials. You can configure credentials by running 
"aws configure".
```

**可能的原因：** AWS 憑證尚未在您的本機環境中正確設定。

**建議的解決方案：**遵循 第 *AWS 2 版命令列界面使用者指南*中的官方文件：[設定 的設定 AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)，以設定您的 AWS CLI 登入資料。

## `StartSandboxConnection` `AccessDeniedException` SSH 進入 CodeBuild 沙盒環境時發生錯誤
<a name="sandbox-troubleshooting.access-denied"></a>

**問題：**嘗試使用命令 連線至 CodeBuild 沙盒環境時`ssh codebuild-sandbox-ssh=<sandbox-arn>`，您可能會遇到下列許可錯誤：

```
An error occurred (AccessDeniedException) when calling the StartSandboxConnection 
operation: 
User: arn:aws:sts::account-id:assumed-role/role-name
is not authorized to perform: codebuild:StartSandboxConnection on resource: 
sandbox-arn
because no identity-based policy allows the codebuild:StartSandboxConnection action
```

**可能原因：**您的 AWS 登入資料缺少執行此操作所需的 CodeBuild 許可。

**建議的解決方案：**確保與您的 AWS CLI 登入資料相關聯的 IAM 使用者或角色具有下列許可：

```
{
    "Effect": "Allow",
    "Action": [
       "codebuild:StartSandboxConnection"
     ],
     "Resource": [
        "arn:aws:codebuild:region:account-id:sandbox/*"
     ]
}
```

## 錯誤：當 SSH 進入 CodeBuild 沙盒環境時，「ssh：無法解析主機名稱」
<a name="sandbox-troubleshooting.hostname"></a>

**問題：**嘗試使用命令 連線至 CodeBuild 沙盒環境時`ssh codebuild-sandbox-ssh=<sandbox-arn>`，您遇到下列主機名稱解析錯誤：

```
ssh: Could not resolve hostname
```

**可能原因：**當本機環境中未正確執行所需的 CodeBuild 沙盒連線指令碼時，通常會發生此錯誤。

**建議解決方案：**

1. 下載 CodeBuild 沙盒連線指令碼。

1. 在終端機中執行指令碼，以建立必要的 SSH 組態。

1. 重試 SSH 連線至沙盒環境。