

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

# 故障診斷 AWS CodeCommit
<a name="troubleshooting"></a>

以下資訊可能有助於診斷 AWS CodeCommit內的常見問題。

**Topics**
+ [對 Git 登入資料和 HTTPS 連線進行故障診斷 AWS CodeCommit](troubleshooting-gc.md)
+ [對 git-remote-codecommit 和 進行故障診斷 AWS CodeCommit](troubleshooting-grc.md)
+ [對 的 SSH 連線進行故障診斷 AWS CodeCommit](troubleshooting-ssh.md)
+ [對登入資料協助程式和 HTTPS 連線進行故障診斷 AWS CodeCommit](troubleshooting-ch.md)
+ [故障診斷 Git 用戶端和 AWS CodeCommit](troubleshooting-git.md)
+ [對存取錯誤和 進行故障診斷 AWS CodeCommit](troubleshooting-ae.md)
+ [故障診斷組態錯誤和 AWS CodeCommit](troubleshooting-cf.md)
+ [對主控台錯誤和 進行故障診斷 AWS CodeCommit](troubleshooting-cs.md)
+ [對觸發和 進行故障診斷 AWS CodeCommit](troubleshooting-ti.md)
+ [開啟偵錯](#troubleshooting-debug)

# 對 Git 登入資料和 HTTPS 連線進行故障診斷 AWS CodeCommit
<a name="troubleshooting-gc"></a>

以下資訊可協助您疑難排解使用 Git 登入資料和 HTTPS 連線至 AWS CodeCommit 儲存庫時的常見問題。

**Topics**
+ [Git 登入資料 AWS CodeCommit：當我在終端機或命令列連線至 CodeCommit 儲存庫時，我一直看到登入資料提示](#troubleshooting-gc1)
+ [Git 登入資料 AWS CodeCommit：我設定了 Git 登入資料，但我的系統並未使用這些登入資料](#troubleshooting-gc2)

## Git 登入資料 AWS CodeCommit：當我在終端機或命令列連線至 CodeCommit 儲存庫時，我一直看到登入資料提示
<a name="troubleshooting-gc1"></a>

**問題：**當您嘗試從終端機或命令列推送、提取或以其他方式與 CodeCommit 儲存庫互動時，系統會提示您提供使用者名稱和密碼，而且您必須為 IAM 使用者提供 Git 登入資料。

**可能的修正：**此錯誤的最常見原因是您的本機電腦正在執行不支援登入資料管理的作業系統，或未安裝登入資料管理公用程式，或 IAM 使用者的 Git 登入資料尚未儲存至其中一個登入資料管理系統。根據作業系統和本機環境，您可能需要安裝登入資料管理工具、設定作業系統中包含的登入資料管理工具，或自訂本機環境以使用登入資料儲存體。例如，如果您的電腦正在執行 macOS，您可以使用 Keychain Access 公用程式來存放您的登入資料。如果您的電腦執行 Windows，您可以使用隨著適用於 Windows 的 Git 安裝的 Credential Manager。如需詳細資訊，請參閱 Git 文件中的[對於使用 Git 登入資料的 HTTPS 使用者](setting-up-gc.md)和[Credential Storage](https://git-scm.com/book/en/v2/Git-Tools-Credential-Storage)。

## Git 登入資料 AWS CodeCommit：我設定了 Git 登入資料，但我的系統並未使用這些登入資料
<a name="troubleshooting-gc2"></a>

**問題：**當您嘗試搭配 Git 用戶端使用 CodeCommit 時，用戶端似乎不會為您的 IAM 使用者使用 Git 登入資料。

**可能的修正：**此錯誤最常見的原因是，您先前將電腦設定為使用 AWS CLI隨附的登入資料協助程式。請檢查您的 .gitconfig 檔案中類似以下的區段，並且將它們移除：

```
[credential "https://git-codecommit.*.amazonaws.com"]
    helper = !aws codecommit credential-helper $@ 
    UseHttpPath = true
```

儲存檔案，然後開啟新的命令列或終端機工作階段，之後再次嘗試連接。

您也可能已在電腦上設定多個登入資料協助程式或管理程式，那麼您的系統可能會預設使用另一個組態。若要將使用的登入資料協助程式重設為預設值，執行 **git config** 命令時您可以使用 **--system** 選項，而不是 **--global** 或 **--local**。

如需詳細資訊，請參閱 Git 文件中的[對於使用 Git 登入資料的 HTTPS 使用者](setting-up-gc.md)和[Credential Storage](https://git-scm.com/book/en/v2/Git-Tools-Credential-Storage)。

# 對 git-remote-codecommit 和 進行故障診斷 AWS CodeCommit
<a name="troubleshooting-grc"></a>

以下資訊可以協助您對與 AWS CodeCommit 儲存庫連線時可能會遇到的 **git-remote-codecommit** 相關問題進行故障診斷。

**Topics**
+ [我看到錯誤：git：'remote-codecommit' 不是 git 命令](#troubleshooting-grc-syn1)
+ [我看到錯誤：嚴重：找不到 'codecommit' 的遠端協助程式](#troubleshooting-grc-syn2)
+ [複製錯誤：我無法從 IDE 複製 CodeCommit 儲存庫](#troubleshooting-grc-ide1)
+ [推送或提取錯誤：我無法將遞交從 IDE 推送或提取至 CodeCommit 儲存庫](#troubleshooting-grc-ide2)
+ [安裝錯誤：當我嘗試安裝 git-remote-codecommit 時，externally-managed-environment錯誤](#troubleshooting-grc-pm1)

## 我看到錯誤：git：'remote-codecommit' 不是 git 命令
<a name="troubleshooting-grc-syn1"></a>

**問題：**當您嘗試使用 git-remote-codecommit 時，您會看到 git-remote-codecommit 不是 git 命令的錯誤。請參閱「git --help」。

**可能的修正：**此錯誤的最常見原因是您尚未將 git-remote-codecommit 可執行檔新增至 PATH，或字串包含語法錯誤。當 git 和 remote-codecommit 之間缺少連字號，或在 git-remote-codecommit 之前放置額外的 git 時，可能會發生這種情況。

如果您已將本機安裝更新為不支援的版本，也可能會遇到此錯誤。如需 Python 支援版本的詳細資訊，請參閱 [git-remote-codecommit](https://pypi.org/project/git-remote-codecommit/)。

如需設定和使用 git-remote-codecommit 的詳細資訊，請參閱 [AWS CodeCommit 使用 git-remote-codecommit 對 HTTPS 連線的設定步驟](setting-up-git-remote-codecommit.md)。

## 我看到錯誤：嚴重：找不到 'codecommit' 的遠端協助程式
<a name="troubleshooting-grc-syn2"></a>

**問題：**當您嘗試使用 git-remote-codecommit 時，您會看到錯誤，指出「嚴重：找不到適用於 'codecommit' 的遠端協助程式」。

**可能的修正：**此錯誤的最常見原因是：
+ git-remote-codecommit 的設定未完成
+ 您已在不在路徑中或未設定為`Path`環境變數一部分的位置安裝 git-remote-codecommit 
+ Python 不在您的路徑中，或未設定為`Path`環境變數的一部分
+ 您正在使用安裝 git-remote-codecommit 完成後尚未重新啟動的終端機或命令列視窗

如需設定和使用 git-remote-codecommit 的詳細資訊，請參閱 [AWS CodeCommit 使用 git-remote-codecommit 對 HTTPS 連線的設定步驟](setting-up-git-remote-codecommit.md)。

## 複製錯誤：我無法從 IDE 複製 CodeCommit 儲存庫
<a name="troubleshooting-grc-ide1"></a>

**問題：**當您嘗試在 IDE 中複製 CodeCommit 儲存庫時，您會看到錯誤，指出端點或 URL 無效。

**可行的修正方法：**並非所有 IDE 皆可支援 **git-remote-codecommit** 在複製期間使用的 URL。透過終端機或命令列從本機複製儲存庫，然後將該本機儲存庫新增到 IDE。如需詳細資訊，請參閱[步驟 3：連線至 CodeCommit 主控台並複製儲存庫](setting-up-git-remote-codecommit.md#setting-up-git-remote-codecommit-connect-console)。

## 推送或提取錯誤：我無法將遞交從 IDE 推送或提取至 CodeCommit 儲存庫
<a name="troubleshooting-grc-ide2"></a>

**問題：**當您嘗試從 IDE 提取或推送程式碼時，出現連線錯誤。

**可行的修正方法：**此錯誤最常見的原因是，IDE 與 **git-remote-codecommit** 等 Git 遠端協助程式不相容。透過命令列或終端機使用 Git 命令手動更新本機儲存庫，而不要使用 IDE 功能來遞交、推送和提取程式碼。

如需遠端協助程式和 Git 的詳細資訊，請參閱 [Git 文件](https://git-scm.com/docs/gitremote-helpers)。

## 安裝錯誤：當我嘗試安裝 git-remote-codecommit 時，externally-managed-environment錯誤
<a name="troubleshooting-grc-pm1"></a>

**問題：**當您嘗試執行 `pip install git-remote-codecommit`命令時，您會看到錯誤，指出環境是外部管理。

**可能的修正：**此錯誤的最常見原因是您正在執行 Python 的分佈 （分佈），以定義 EXTERNALLY-MANAGED 標記檔案。最好的解決方案是建立和使用虛擬環境。

如需外部受管環境和 Python 的詳細資訊，請參閱 Python 文件中的[外部受管環境](https://packaging.python.org/en/latest/specifications/externally-managed-environments/#externally-managed-environments)和[使用 pip 和 venv 在虛擬環境中安裝套件](https://packaging.python.org/en/latest/guides/installing-using-pip-and-virtual-environments/)。

# 對 的 SSH 連線進行故障診斷 AWS CodeCommit
<a name="troubleshooting-ssh"></a>

以下資訊可協助您疑難排解使用 SSH 連線至 CodeCommit 儲存庫時的常見問題。

**Topics**
+ [存取錯誤：公開金鑰已成功上傳至 IAM，但在 Linux、macOS 或 Unix 系統上連線失敗](#troubleshooting-ae4)
+ [存取錯誤：公開金鑰已成功上傳至 IAM，且 SSH 測試成功，但在 Windows 系統上連線失敗](#troubleshooting-ae5)
+ [身分驗證挑戰：連線至 CodeCommit 儲存庫時，無法建立主機的真實性](#troubleshooting-ac1)
+ [IAM 錯誤：嘗試將公有金鑰新增至 IAM 時出現「無效的格式」](#troubleshooting-iam1)
+ [我需要使用 SSH 登入資料存取多個 Amazon Web Services 帳戶中的 CodeCommit 儲存庫](#troubleshooting-ssh-multi)
+ [Windows 上的 Git：嘗試使用 SSH 連接時，Bash 模擬器或命令列凍結](#troubleshooting-gw2)
+ [公有金鑰格式在某些 Linux 發行版本中需要規格](#troubleshooting-os-syn2)
+ [存取錯誤：連線至 CodeCommit 儲存庫時 SSH 公有金鑰遭拒](#troubleshooting-permission-denied-ssh-key)

## 存取錯誤：公開金鑰已成功上傳至 IAM，但在 Linux、macOS 或 Unix 系統上連線失敗
<a name="troubleshooting-ae4"></a>

**問題：**當您嘗試連線至 SSH 端點以與 CodeCommit 儲存庫通訊時，無論是在測試連線或複製儲存庫時，連線會失敗或拒絕。

**可能的修正：**指派給 IAM 中公有金鑰的 SSH 金鑰 ID 可能與您的連線嘗試沒有關聯。[您可能尚未設定組態檔案](setting-up-ssh-unixes.md#cc-configure-config)、您可能無法存取組態檔案、另一個設定可能阻止成功讀取組態檔案、您可能提供了錯誤的金鑰 ID，或者您可能已提供 IAM 使用者的 ID，而不是金鑰 ID。

您可以在 IAM 使用者的設定檔的 IAM 主控台中找到 SSH 金鑰 ID：

![\[IAM 主控台中的 SSH 金鑰 ID\]](http://docs.aws.amazon.com/zh_tw/codecommit/latest/userguide/images/codecommit-ssh-key-id-iam.png)


**注意**  
如果您已上傳一個以上的 SSH 金鑰 ID，則會依金鑰 ID 的字母順序列出金鑰，而非依上傳日期。請確定您已複製的金鑰 ID 與正確的上傳日期相關聯。

嘗試使用以下命令測試連線：

```
ssh Your-SSH-Key-ID@git-codecommit.us-east-2.amazonaws.com
```

確認連線後如果您看到成功訊息，則您的 SSH 金鑰 ID 有效。編輯您的組態檔案，將您的連線嘗試與 IAM 中的公有金鑰建立關聯。如果您不想要編輯組態檔，您可以嘗試使用 SSH 金鑰 ID，將所有連線嘗試加到您的儲存庫。例如，如果您想要複製名為 *MyDemoRepo* 的儲存庫而不要修改您的組態檔以將其與您的連線嘗試關聯，您可以執行下列命令：

```
git clone ssh://Your-SSH-Key-ID@git-codecommit.us-east-2.amazonaws.com/v1/repos/MyDemoRepo my-demo-repo
```

如需詳細資訊，請參閱[針對 Linux、macOS 或 Unix 上的 SSH 連線](setting-up-ssh-unixes.md)。

## 存取錯誤：公開金鑰已成功上傳至 IAM，且 SSH 測試成功，但在 Windows 系統上連線失敗
<a name="troubleshooting-ae5"></a>

**問題：**當您嘗試使用 SSH 端點來複製 CodeCommit 儲存庫或與之通訊時，會出現錯誤訊息，其中包含片語 `No supported authentication methods available`。

**可能的修正：**此錯誤最常見的原因是，當您嘗試使用 SSH 時，您的 Windows 系統環境變數集將 Windows 導向使用另一個程式。例如，您可能已設定 GIT\$1SSH 變數以指向其中一個 PuTTY 工具組 (plink.exe)。這可能是傳統的組態，也可能需要在您的電腦上安裝一或多個其他程式。如果您確定不需要此環境變數，您可以開啟系統屬性將其移除。

若要解決這個問題，請開啟 Bash 模擬器，然後重試 SSH 連線，但要包含 `GIT_SSH_COMMAND="SSH"` 做為字首。例如，若要使用 SSH 來複製儲存庫：

```
GIT_SSH_COMMAND="ssh" git clone ssh://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyDemoRepo my-demo-repo
```

在 Windows 命令列透過 SSH 連接時，如果您的 Windows 版本規定連接字串必須包含 SSH 金鑰 ID，就可能發生類似的問題。再次嘗試您的連線，這次包含從 IAM 複製的 SSH 金鑰 ID，做為 命令的一部分。例如：

```
git clone ssh://Your-SSH-Key-ID@git-codecommit.us-east-2.amazonaws.com/v1/repos/MyDemoRepo my-demo-repo
```

## 身分驗證挑戰：連線至 CodeCommit 儲存庫時，無法建立主機的真實性
<a name="troubleshooting-ac1"></a>

**問題：**當您嘗試使用 SSH 端點與 CodeCommit 儲存庫通訊時，出現包含片語的警告訊息 `The authenticity of host 'host-name' can't be established.`

**可能的修正：**您的登入資料可能未正確設定。請遵循[針對 Linux、macOS 或 Unix 上的 SSH 連線](setting-up-ssh-unixes.md)或[Windows 上的 SSH 連線](setting-up-ssh-windows.md)中的指示。

如果您已經依照這些步驟，但問題仍存在，表示可能有人正在嘗試發動中間人攻擊。當您看到下列訊息時，請輸入 `no` 並按 Enter 鍵。

```
Are you sure you want to continue connecting (yes/no)?
```

在繼續連線之前，請確定 CodeCommit 連線的指紋和公有金鑰符合 SSH 設定主題中記錄的指紋和公有金鑰。


**CodeCommit 的公有指紋**  

| Server | 密碼編譯雜湊類型 | 指紋 | 
| --- | --- | --- | 
| git-codecommit.us-east-2.amazonaws.com | MD5 | a9:6d:03:ed:08:42:21:be:06:e1:e0:2a:d1:75:31:5e | 
| git-codecommit.us-east-2.amazonaws.com | SHA256 | 3lBlW2g5xn/NA2Ck6dyeJIrQOWvn7n8UEs56fG6ZIzQ | 
| git-codecommit.us-east-1.amazonaws.com | MD5 | a6:9c:7d:bc:35:f5:d4:5f:8b:ba:6f:c8:bc:d4:83:84 | 
| git-codecommit.us-east-1.amazonaws.com | SHA256 | eLMY1j0DKA4uvDZcl/KgtIayZANwX6t8\$18isPtotBoY | 
| git-codecommit.us-west-2.amazonaws.com | MD5 | a8:68:53:e3:99:ac:6e:d7:04:7e:f7:92:95:77:a9:77 | 
| git-codecommit.us-west-2.amazonaws.com | SHA256 | 0pJx9SQpkbPUAHwy58UVIq0IHcyo1fwCpOOuVgcAWPo | 
| git-codecommit.eu-west-1.amazonaws.com | MD5 | 93:42:36:ea:22:1f:f1:0f:20:02:4a:79:ff:ea:12:1d | 
| git-codecommit.eu-west-1.amazonaws.com | SHA256 | tKjRkOL8dmJyTmSbeSdN1S8F/f0iql3RlvqgTOP1UyQ | 
| git-codecommit.ap-northeast-1.amazonaws.com | MD5 | 8e:a3:f0:80:98:48:1c:5c:6f:59:db:a7:8f:6e:c6:cb | 
| git-codecommit.ap-northeast-1.amazonaws.com | SHA256 | Xk/WeYD/K/bnBybzhiuu4dWpBJtXPf7E30jHU7se4Ow | 
| git-codecommit.ap-southeast-1.amazonaws.com | MD5 | 65:e5:27:c3:09:68:0d:8e:b7:6d:94:25:80:3e:93:cf | 
| git-codecommit.ap-southeast-1.amazonaws.com | SHA256 | ZIsVa7OVzxrTIf\$1Rk4UbhPv6Es22mSB3uTBojfPXIno | 
| git-codecommit.ap-southeast-2.amazonaws.com | MD5 | 7b:d2:c1:24:e6:91:a5:7b:fa:c1:0c:35:95:87:da:a0 | 
| git-codecommit.ap-southeast-2.amazonaws.com | SHA256 | nYp\$1gHas80HY3DqbP4yanCDFhqDVjseefVbHEXqH2Ec | 
| git-codecommit.ap-southeast-3.amazonaws.com | MD5 | 64:d9:e0:53:19:4f:a8:91:9a:c3:53:22:a6:a8:ed:a6 | 
| git-codecommit.ap-southeast-3.amazonaws.com | SHA256 | ATdkGSFhpqIu7RqUVT/1RZo6MLxxxUW9NoDVMbAc/6g | 
| git-codecommit.me-central-1.amazonaws.com | MD5 | bd:fa:e2:f9:05:84:d6:39:6f:bc:d6:8d:fe:de:61:76 | 
| git-codecommit.me-central-1.amazonaws.com | SHA256 | grceUDWubo4MzG1NoaKZKUfrgPvfN3ijliOnQr1lTZA | 
| git-codecommit.eu-central-1.amazonaws.com | MD5 | 74:5a:e8:02:fc:b2:9c:06:10:b4:78:84:65:94:22:2d | 
| git-codecommit.eu-central-1.amazonaws.com | SHA256 | MwGrkiEki8QkkBtlAgXbYt0hoZYBnZF62VY5RzGJEUY | 
| git-codecommit.ap-northeast-2.amazonaws.com | MD5 | 9f:68:48:9b:5f:fc:96:69:39:45:58:87:95:b3:69:ed | 
| git-codecommit.ap-northeast-2.amazonaws.com | SHA256 | eegAPQrWY9YsYo9ZHIKOmxetfXBHzAZd8Eya53Qcwko | 
| git-codecommit.sa-east-1.amazonaws.com | MD5 | 74:99:9d:ff:2b:ef:63:c6:4b:b4:6a:7f:62:c5:4b:51 | 
| git-codecommit.sa-east-1.amazonaws.com | SHA256 | kW\$1VKB0jpRaG/ZbXkgbtMQbKgEDK7JnISV3SVoyCmzU | 
| git-codecommit.us-west-1.amazonaws.com | MD5 | 3b:76:18:83:13:2c:f8:eb:e9:a3:d0:51:10:32:e7:d1 | 
| git-codecommit.us-west-1.amazonaws.com | SHA256 | gzauWTWXDK2u5KuMMi5vbKTmfyerdIwgSbzYBODLpzg | 
| git-codecommit.eu-west-2.amazonaws.com | MD5 | a5:65:a6:b1:84:02:b1:95:43:f9:0e:de:dd:ed:61:d3 | 
| git-codecommit.eu-west-2.amazonaws.com | SHA256 | r0Rwz5k/IHp/QyrRnfiM9j02D5UEqMbtFNTuDG2hNbs | 
| git-codecommit.ap-south-1.amazonaws.com | MD5 | da:41:1e:07:3b:9e:76:a0:c5:1e:64:88:03:69:86:21 | 
| git-codecommit.ap-south-1.amazonaws.com | SHA256 | hUKwnTj7\$1Xpx4Kddb6p45j4RazIJ4IhAMD8k29itOfE | 
| git-codecommit.ap-south-2.amazonaws.com | MD5 | bc:cc:9f:15:f8:f3:58:a2:68:65:21:e2:23:71:8d:ce | 
| git-codecommit.ap-south-2.amazonaws.com | SHA256 | Xe0CyZEOvgR5Xa2YUGqf\$1jn8/Ut7l7nX/CmslSFNEig | 
| git-codecommit.ca-central-1.amazonaws.com | MD5 | 9f:7c:a2:2f:8c:b5:74:fd:ab:b7:e1:fd:af:46:ed:23 | 
| git-codecommit.ca-central-1.amazonaws.com | SHA256 | Qz5puafQdANVprLlj6r0Qyh4lCNsF6ob61dGcPtFS7w | 
| git-codecommit.eu-west-3.amazonaws.com | MD5 | 1b:7f:97:dd:d7:76:8a:32:2c:bd:2c:7b:33:74:6a:76 | 
| git-codecommit.eu-west-3.amazonaws.com | SHA256 | uw7c2FL564jVoFgtc\$1ikzILnKBsZz7t9\$1CFdSJjKbLI | 
| git-codecommit.us-gov-west-1.amazonaws.com | MD5 | 9f:6c:19:3b:88:cd:e8:88:1b:9c:98:6a:95:31:8a:69 | 
| git-codecommit.us-gov-west-1.amazonaws.com | SHA256 | djXQoSIFcg8vHe0KVH1xW/gOF9X37tWTqu4Hkng75x4 | 
| git-codecommit.us-gov-east-1.amazonaws.com | MD5 | 00:8d:b5:55:6f:05:78:05:ed:ea:cb:3f:e6:f0:62:f2 | 
| git-codecommit.us-gov-east-1.amazonaws.com | SHA256 | fVb\$1R0z7qW7minenW\$1rUpAABRCRBTCzmETAJEQrg98 | 
| git-codecommit.eu-north-1.amazonaws.com | MD5 | 8e:53:d8:59:35:88:82:fd:73:4b:60:8a:50:70:38:f4 | 
| git-codecommit.eu-north-1.amazonaws.com | SHA256 | b6KSK7xKq\$1V8jl7iuAcjqXsG7zkqoUZZmmhYYFBq1wQ | 
| git-codecommit.me-south-1.amazonaws.com | MD5 | 0e:39:28:56:d5:41:e6:8d:fa:81:45:37:fb:f3:cd:f7 | 
| git-codecommit.me-south-1.amazonaws.com | SHA256 | O\$1NToCGgjrHekiBuOl0ad7ROGEsz\$1DBLXOd/c9wc0JU | 
| git-codecommit.ap-east-1.amazonaws.com | MD5 | a8:00:3d:24:52:9d:61:0e:f6:e3:88:c8:96:01:1c:fe | 
| git-codecommit.ap-east-1.amazonaws.com | SHA256 | LafadYwUYW8hONoTRpojbjNs9IRnbEwHtezD3aAIBX0 | 
| git-codecommit---cn-north-1.amazonaws.com.rproxy.goskope.com.cn | MD5 | 11:7e:2d:74:9e:3b:94:a2:69:14:75:6f:5e:22:3b:b3 | 
| git-codecommit---cn-north-1.amazonaws.com.rproxy.goskope.com.cn | SHA256 | IYUXxH2OpTDsyYMLIp\$1JY8CTLS4UX\$1ZC5JVZXPRaxc8 | 
| git-codecommit---cn-northwest-1.amazonaws.com.rproxy.goskope.com.cn | MD5 | 2e:a7:fb:4c:33:ac:6c:f9:aa:f2:bc:fb:0a:7b:1e:b6 | 
| git-codecommit---cn-northwest-1.amazonaws.com.rproxy.goskope.com.cn | SHA256 | wqjd6eHd0\$1mOBx\$1dCNuL0omUoCNjaDtZiEpWj5TmCfQ | 
| git-codecommit.eu-south-1.amazonaws.com | MD5 | b9:f6:5d:e2:48:92:3f:a9:37:1e:c4:d0:32:0e:fb:11 | 
| git-codecommit.eu-south-1.amazonaws.com | SHA256 | lyXrWbCg3uQmJrl1XxB/ASR7ugW1Ysf5yzYOJbudHsI | 
| git-codecommit.ap-northeast-3.amazonaws.com | MD5 | 25:17:40:da:b9:d4:18:c3:b6:b3:fb:ed:1c:20:fe:29 | 
| git-codecommit.ap-northeast-3.amazonaws.com | SHA256 | 2B815B9F0AvwLnRxSVxUz4kDYmtEQUGGdQYP8OQLXhA | 
| git-codecommit.af-south-1.amazonaws.com | MD5 | 21:a0:ba:d7:c1:d1:b5:39:98:8d:4d:7c:96:f5:ca:29 | 
| git-codecommit.af-south-1.amazonaws.com | SHA256 | C34ji3x/cnsDZjUpyNGXdE5pjHYimqJrQZ3leTgqJHM | 
| git-codecommit.il-central-1.amazonaws.com | MD5 | 04:74:89:16:98:7a:61:b1:69:46:42:3c:d1:b4:ac:a9 | 
| git-codecommit.il-central-1.amazonaws.com | SHA256 | uFxhp51kUWhleTLeYbxQVYm4RnNLNZ5Dbdm1cgdSl/8 | 

## IAM 錯誤：嘗試將公有金鑰新增至 IAM 時出現「無效的格式」
<a name="troubleshooting-iam1"></a>

**問題：**在 IAM 中，當您嘗試設定 以 CodeCommit 使用 SSH `Invalid format`時，出現錯誤訊息，其中包含您嘗試新增公有金鑰時的片語。

**可能的修正：**IAM 要求公有金鑰必須以 ssh-rsa 格式或 PEM 格式編碼。它僅接受 OpenSSH 格式的公有金鑰，並具有 *IAM 使用者指南*中[搭配使用 SSH 金鑰與 CodeCommit](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_ssh-keys.html#ssh-keys-code-commit) 中指定的其他要求。如果您提供另一種格式的公有金鑰，或金鑰未包含必要的位元數，您會看到此錯誤。
+ 當您複製 SSH 公開金鑰時，您的作業系統可能已經引入換行符號。請確定您新增至 IAM 的公有金鑰中沒有換行符號。
+ 某些 Windows 作業系統不會使用 OpenSSH 格式。若要產生金鑰對並複製 IAM 所需的 OpenSSH 格式，請參閱 [步驟 3：設定 Git 和 CodeCommit 的公有和私有金鑰](setting-up-ssh-windows.md#setting-up-ssh-windows-keys-windows)。

如需 IAM 中 SSH 金鑰需求的詳細資訊，請參閱《*IAM 使用者指南*》中的[搭配使用 SSH 金鑰與 CodeCommit](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_ssh-keys.html#ssh-keys-code-commit)。

## 我需要使用 SSH 登入資料存取多個 Amazon Web Services 帳戶中的 CodeCommit 儲存庫
<a name="troubleshooting-ssh-multi"></a>

**問題：**我想要在多個 Amazon Web Services 帳戶中設定 CodeCommit 儲存庫的 SSH 存取。

**可能的修正：**您可以為每個 Amazon Web Services 帳戶建立唯一的 SSH 公有/私有金鑰對，並使用每個金鑰設定 IAM。然後，您可以使用與公有金鑰相關聯的每個 IAM 使用者 ID 的相關資訊來設定 \$1/.ssh/config 檔案。例如：

```
Host codecommit-1
    Hostname git-codecommit.us-east-1.amazonaws.com
    User SSH-KEY-ID-1 # This is the SSH Key ID you copied from IAM in Amazon Web Services account 1 (for example, APKAEIBAERJR2EXAMPLE1).
    IdentityFile ~/.ssh/codecommit_rsa # This is the path to the associated public key file, such as id_rsa.  We advise creating CodeCommit specific _rsa files.
 
Host codecommit-2
    Hostname git-codecommit.us-east-1.amazonaws.com
    User SSH-KEY-ID-2 # This is the SSH Key ID you copied from IAM in Amazon Web Services account 2 (for example, APKAEIBAERJR2EXAMPLE2).
    IdentityFile ~/.ssh/codecommit_2_rsa # This is the path to the other associated public key file.  We advise creating CodeCommit specific _rsa files.
```

在此組態中，您將能夠將 'git-codecommit.us-east-1.amazonaws.com' 取代為 'codecommit-2'。例如，若要複製第二個 Amazon Web Services 帳戶中的儲存庫：

```
git clone ssh://codecommit-2/v1/repos/YourRepositoryName
```

若要為您的儲存庫設定遠端 ，請執行 **git remote add**。例如：

```
git remote add origin ssh://codecommit-2/v1/repos/YourRepositoryName
```

如需更多範例，請參閱 GitHub 上的[此論壇文章](https://forums.aws.amazon.com/thread.jspa?messageID=711158)和此貢獻。 [ GitHub](https://gist.github.com/justinpawela/3a7056cd592d688425e59de2ef6f1da0)

## Windows 上的 Git：嘗試使用 SSH 連接時，Bash 模擬器或命令列凍結
<a name="troubleshooting-gw2"></a>

**問題：**在您設定適用於 Windows 的 SSH 存取，並於命令列或終端機確認連線之後，您看到訊息指出登錄中沒有快取伺服器的主機金鑰，而當您在命令提示字元或 Bash 模擬器中嘗試使用 **git pull**、**git push** 或 **git clone** 等命令時，嘗試將金鑰存放在快取中會遭到凍結 (不接受 y/n/return 鍵輸入)。

**可能的修正：**此錯誤最常見的原因是 Git 環境設定為使用 OpenSSH 以外的方法進行身分驗證 (可能是 PuTTY)。已知這在某些組態中快取金鑰時會造成問題。若要修正此問題，請嘗試下列其中一項：
+ 開啟 Bash 模擬器，並在 Git 命令之前新增 `GIT_SSH_COMMAND="ssh"` 參數。例如，如果您嘗試推送至儲存庫，不要輸入 **git push**，請輸入：

  ```
  GIT_SSH_COMMAND="ssh" git push
  ```
+ 如果您已安裝 PuTTY，請開啟 PuTTY，並在**主機名稱 （或 IP 地址）** 中輸入您要連線的 CodeCommit 端點 （例如 git-codecommit.us-east-2.amazonaws.com)。選擇 **Open** (開啟)。當出現 PuTTY 安全提醒的提示時，請選擇 **Yes (是)**，以永久快取金鑰。
+ 重新命名或刪除 `GIT_SSH` 環境變數 (如果您已不再使用它)。然後開啟新的命令提示字元或 Bash 模擬器工作階段，並再次嘗試您的命令。

關於其他解決方案，請參閱 Stack Overflow 上[Git 複製/提取在快取的存放區金鑰中持續凍結](http://stackoverflow.com/questions/33240137/git-clone-pull-continually-freezing-at-store-key-in-cache)。

## 公有金鑰格式在某些 Linux 發行版本中需要規格
<a name="troubleshooting-os-syn2"></a>

**問題：**當您嘗試設定公有/私有金鑰對時，會收到錯誤。

**可能的修正：**某些 Linux 發行版本需要 `~/.ssh/config` 檔案中的額外一行組態，以指定可接受的公有金鑰類型。如需詳細資訊，請參閱 分發的文件`PubkeyAcceptedKeyTypes`。

## 存取錯誤：連線至 CodeCommit 儲存庫時 SSH 公有金鑰遭拒
<a name="troubleshooting-permission-denied-ssh-key"></a>

**問題：**當您嘗試使用 SSH 端點與 CodeCommit 儲存庫通訊時，會出現錯誤訊息，其中包含片語 `Error: public key denied`。

**可能的修正：**此錯誤最常見的原因是您尚未完成 SSH 連接的設定。設定公有和私有 SSH 金鑰對，然後將公有金鑰與您的 IAM 使用者建立關聯。如需設定 SSH 的詳細資訊，請參閱[針對 Linux、macOS 或 Unix 上的 SSH 連線](setting-up-ssh-unixes.md)和[Windows 上的 SSH 連線](setting-up-ssh-windows.md)。

# 對登入資料協助程式和 HTTPS 連線進行故障診斷 AWS CodeCommit
<a name="troubleshooting-ch"></a>

當您使用 AWS CLI 和 HTTPS 隨附的登入資料協助程式連線至 CodeCommit 儲存庫時，下列資訊可協助您疑難排解常見問題。

**注意**  
雖然登入資料協助程式是使用聯合存取、身分提供者或臨時登入資料連線至 CodeCommit 的支援方法，但建議的方法是安裝和使用 **git-remote-codecommit** 公用程式。如需詳細資訊，請參閱[AWS CodeCommit 使用 git-remote-codecommit 對 HTTPS 連線的設定步驟](setting-up-git-remote-codecommit.md)。

**Topics**
+ [我在執行 `git config`命令以設定登入資料協助程式時收到錯誤](#troubleshooting-os-syn1)
+ [嘗試複製儲存庫時，我看到讀取使用者名稱時發生錯誤](#troubleshooting-gitconfig1)
+ [我在 Windows 中使用登入資料協助程式時發生找不到命令的錯誤](#troubleshooting-py3)
+ [當我連線到 CodeCommit 儲存庫時，系統會提示我輸入使用者名稱](#troubleshooting-ae1)
+ [Git for macOS：我已成功設定登入資料協助程式，但現在我無法存取儲存庫 (403)](#troubleshooting-macoshttps)
+ [適用於 Windows 的 Git：我已安裝適用於 Windows 的 Git，但現在拒絕我存取儲存庫 (403)](#troubleshooting-windowshttps)

## 我在執行 `git config`命令以設定登入資料協助程式時收到錯誤
<a name="troubleshooting-os-syn1"></a>

**問題：**當您嘗試執行 git config 命令來設定登入資料協助程式以與 CodeCommit 儲存庫通訊時，您會看到引數太少的錯誤，或出現建議 Git config 命令和語法的使用提示。

**可能的修正：**此錯誤的最常見原因是 Windows 作業系統上的 命令使用單引號，或 Linux、macOS 或 Unix 作業系統中的 命令使用雙引號。正確的語法如下：
+ Windows：`git config --global credential.helper "!aws codecommit credential-helper $@"`
+ Linux、macOS 或 Unix： `git config --global credential.helper '!aws codecommit credential-helper $@'`

## 嘗試複製儲存庫時，我看到讀取使用者名稱時發生錯誤
<a name="troubleshooting-gitconfig1"></a>

**問題：**當您嘗試使用登入資料協助程式複製儲存庫時，您會看到錯誤，指出系統無法讀取儲存庫 URL 的使用者名稱。

**可能的修正：**此錯誤的最常見原因是未在電腦上正確建立或設定 .gitconfig 檔案。開啟您的 .gitconfig 檔案，並確認登入資料協助程式已正確設定。如果您在執行 Linux、macOS 或 Unix 的電腦上，也請確定 `$HOME `的值已針對您的系統正確設定。

## 我在 Windows 中使用登入資料協助程式時發生找不到命令的錯誤
<a name="troubleshooting-py3"></a>

**問題：**更新 AWS CLI 後，登入資料協助程式與 CodeCommit 儲存庫的連線會失敗，並顯示 `aws codecommit credential-helper $@ get: aws: command not found`。

**原因**：此錯誤的最常見原因是您的 AWS CLI 版本已更新為使用 Python 3 的版本。這是 MSI 套件的已知問題。若要驗證您是否具有受影響的版本，請開啟命令列並執行下列命令：`aws --version`

如果輸出 Python 版本開頭為 3，表示您具有受影響的版本。例如：

```
aws-cli/1.16.62 Python/3.6.2 Darwin/16.7.0 botocore/1.12.52
```

**可能的修正：**您可執行以下其中一項來解決此問題：
+ 在 Windows AWS CLI 上使用 Python 和 pip 而非 MSI 安裝和設定 。如需詳細資訊，請參閱在 [Windows AWS CLI 上安裝 Python、pip 和 ](https://docs.aws.amazon.com/cli/latest/userguide/install-windows.html#awscli-install-windows-pip)。
+ 手動編輯 `.gitconfig` 檔案，變更 `[credential]` 區段來明確指向本機電腦上的 `aws.cmd`。例如：

  ```
  [credential]    
      helper = !"\C:\\Program Files\\Amazon\\AWSCLI\\bin\\aws.cmd\" codecommit credential-helper $@ 
      UseHttpPath = true
  ```
+ 執行 **git config** 命令來更新 `.gitconfig` 檔案以明確參考 `aws.cmd`，並視需要手動更新 PATH 環境變數來包含命令的路徑。例如：

  ```
  git config --global credential.helper "!aws.cmd codecommit credential-helper $@"
  git config --global credential.UseHttpPath true
  ```

## 當我連線到 CodeCommit 儲存庫時，系統會提示我輸入使用者名稱
<a name="troubleshooting-ae1"></a>

**問題：**當您嘗試使用登入資料協助程式與 CodeCommit 儲存庫通訊時，會出現一則訊息，提示您輸入使用者名稱。

**可能的修正：**設定您的 AWS 設定檔，或確保您使用的設定檔是您設定用於 CodeCommit 的設定檔。如需設定的詳細資訊，請參閱[使用 AWS CLI 登入資料協助程式設定 HTTPS 連線至 Linux、macOS 或 Unix 上 AWS CodeCommit 儲存庫的步驟](setting-up-https-unixes.md)或[使用 AWS CLI 登入資料協助程式在 Windows 上對 AWS CodeCommit 儲存庫進行 HTTPS 連線的設定步驟](setting-up-https-windows.md)。如需 IAM、存取金鑰和私密金鑰的詳細資訊，請參閱[管理 IAM 使用者的存取金鑰](https://docs.aws.amazon.com/IAM/latest/UserGuide/ManagingCredentials.html)和[如何取得登入資料？](https://docs.aws.amazon.com/IAM/latest/UserGuide/IAM_Introduction.html#IAM_SecurityCredentials)

## Git for macOS：我已成功設定登入資料協助程式，但現在我無法存取儲存庫 (403)
<a name="troubleshooting-macoshttps"></a>

**問題：**在 macOS 上，登入資料協助程式似乎未如預期般存取或使用登入資料。這可能是因為兩個不同的問題所導致：
+  AWS CLI 設定為與儲存庫存在的 AWS 區域 不同的 。
+ Keychain Access 公用程式所儲存的登入資料那時已過期。

**可能的修正：**若要驗證 AWS CLI 是否已針對正確的區域設定 ，請執行 **aws configure**命令，並檢閱顯示的資訊。如果 CodeCommit 儲存庫與針對 顯示的儲存庫 AWS 區域 不同 AWS CLI，您必須執行 **aws configure**命令，並將值變更為適合該區域的值。如需詳細資訊，請參閱[步驟 1：CodeCommit 的初始組態](setting-up-https-unixes.md#setting-up-https-unixes-account)。

 OS X 和 macOS 上發行的預設 Git 版本使用 Keychain Access 公用程式來儲存產生的憑證。基於安全考量，為存取 CodeCommit 儲存庫而產生的密碼是暫時的，因此儲存在金鑰鏈中的登入資料會在大約 15 分鐘後停止運作。如果您只使用 CodeCommit 存取 Git，請嘗試下列動作：

1. 在終端機，執行 **git config** 命令來尋找 Keychain Access 公用程式定義所在的 Git 組態檔案 (`gitconfig`)。根據您的本機系統和偏好設定，您可能會有多個 `gitconfig` 檔案。

   ```
   git config -l --show-origin | grep credential
   ```

   在此命令的輸出中，搜尋類似以下的結果：

   ```
   file:/path/to/gitconfig  credential.helper=osxkeychain
   ```

   在此行開始處所列的檔案為您必須編輯的 Git 組態檔案。

1. 若要編輯 Git 設定檔，請使用純文字編輯器或執行下列命令：

   ```
   nano /usr/local/git/etc/gitconfig
   ```

1. 使用下列其中一個策略修改組態：
   + 註解或刪除包含 的登入資料區段`helper = osxkeychain`。例如：

     ```
     # helper = osxkeychain
     ```
   + 同時更新 `aws credential helper`和 `osxkeychain`登入資料協助程式區段，以取得內容。例如，如果 `osxkeychain` 用於向 GitHub 進行身分驗證：

     ```
     [credential "https://git-codecommit.us-east-1.amazonaws\.com"]
       helper = !aws --profile CodeCommitProfile codecommit credential-helper $@
       UseHttpPath = true
     [credential "https://github.com"]
       helper = osxkeychain
     ```

     在此組態中，當遠端主機符合「`https://github.com`」時，Git 將使用`osxkeychain`協助程式，當遠端主機符合「`https://git-codecommit\.us-east-1\.amazonaws.com`」時，將使用登入資料協助程式。
   + 在登入資料協助程式之前包含空字串協助程式。例如，使用名為 *CodeCommitProfile* 的設定檔搭配 CLI 時，若要不使用`osxkeychain`協助程式：

     ```
     [credential]
       helper =
       helper = !aws --profile CodeCommitProfile codecommit credential-helper $@
       UseHttpPath = true
     ```
**提示**  
如果您想要排除所有設定檔，您也可以將空字串協助程式行後面的行設定為與 CodeCommit 不相符：  

     ```
     helper = !aws codecommit credential-helper $@
     ```

   或者，如果您要繼續使用 Keychain Access 公用程式來快取其他 Git 儲存庫的登入資料，請修改標頭而非將它變更為註解。例如，若要允許 GitHub 快取的登入資料，您可以修改標頭，如下所示：

   ```
   [credential "https://github.com"]
      helper = osxkeychain
   ```

如果您使用 Git 存取其他儲存庫，您可以設定 Keychain Access 公用程式，使其不會為 CodeCommit 儲存庫提供登入資料。若要設定 Keychain Access 公用程式：

1. 開啟 Keychain Access 公用程式。(您可以使用 Finder 找到它。)

1. 搜尋`git-codecommit.us-east-2.amazonaws.com`並將 *us-east-2* 取代為儲存 AWS 區域 庫所在的 。反白此列，開啟操作功能表 (按一下滑鼠右鍵)，然後選擇 **Get Info (取得資訊)**。

1. 選擇 **Access Control (存取控制)** 標籤。

1. 在 **Confirm before allowing access (允許存取之前確認)** 中，選擇 `git-credential-osxkeychain`，然後選擇減號從清單移除它。
**注意**  
從清單移除 `git-credential-osxkeychain` 之後，每當您執行 Git 命令時就會看到對話方塊。選擇 **Deny (拒絕)** 以繼續。如果您覺得快顯的干擾性太大，以下是一些替代選項：  
使用 SSH 或 Git 登入資料而不是登入資料協助程式搭配 HTTPS 連線至 CodeCommit。如需詳細資訊，請參閱[針對 Linux、macOS 或 Unix 上的 SSH 連線](setting-up-ssh-unixes.md)及[使用 Git 登入資料為 HTTPS 使用者設定](setting-up-gc.md)。
在 Keychain Access 公用程式的**存取控制**索引標籤中`git-codecommit.us-east-2.amazonaws.com`，選擇**允許所有應用程式存取此項目 （不限制存取此項目）** 選項。這可防止快顯，但登入資料最終仍會過期 (平均大約 15 分鐘)，然後您會看到 403 錯誤訊息。發生這種情況時，您必須刪除金鑰鏈項目才能還原功能。
安裝一個依預設不使用金鑰鏈的 Git 版本。
考慮用於刪除金鑰鏈項目的一個指令碼解決方案。若要檢視指令碼解決方案的社群產生範例，請參閱《》中的 [OS X 憑證存放區中的定期刪除快取登入資料的 Mac OS X 指令碼](integrations.md#integrations-community-code)[產品和服務整合](integrations.md)。

如果想要讓 Git 完全無法使用 Keychain Access 公用程式，您可以設定 Git 以停止使用 osxkeychain 做為登入資料協助程式。例如，如果您開啟終端機並執行命令 `git config --system credential.helper`，而它傳回 `osxkeychain`，就表示 Git 設定為使用 Keychain Access 公用程式。您可以執行下列命令來加以變更：

```
git config --system --unset credential.helper
```

請注意，使用 `--system`選項執行此命令會變更所有使用者整個系統的 Git 行為，這可能會對其他使用者造成意外後果，如果您除了 CodeCommit 之外還使用其他儲存庫服務，可能會對其他儲存庫造成意外後果。另外，此方法可能需要使用 `sudo`，而且您的帳戶可能沒有可套用此變更的足夠系統許可。請務必再次執行 `git config --system credential.helper` 命令來驗證已成功套用命令。如需詳細資訊，請參閱[自訂 Git - Git 組態](https://git-scm.com/book/en/v2/Customizing-Git-Git-Configuration)和 [Stack Overflow 上的此文章](https://stackoverflow.com/questions/16052602/disable-git-credential-osxkeychain)。

## 適用於 Windows 的 Git：我已安裝適用於 Windows 的 Git，但現在拒絕我存取儲存庫 (403)
<a name="troubleshooting-windowshttps"></a>

**問題：**在 Windows 上，登入資料協助程式似乎未如預期存取或使用您的登入資料。這可能是因為不同的問題所導致：
+  AWS CLI 設定為與儲存庫存在的 AWS 區域 不同的 。
+ 根據預設，Git for Windows 會安裝與使用登入資料協助程式的 CodeCommit 連線不相容的 Git AWS Credential Manager 公用程式。安裝後，即使登入資料協助程式已搭配 安裝， AWS CLI 並針對 CodeCommit 的連線進行設定，也會導致儲存庫的連線失敗。
+ 某些版本的適用於 Windows 的 Git 登入資料可能無法完全符合 [RFC 2617](https://tools.ietf.org/html/rfc2617#page-5) 和 [RFC 4559](https://tools.ietf.org/html/rfc4559#page-2)，這可能會導致 Git 登入資料和 AWS CLI隨附的登入資料協助程式的問題。如需詳細資訊，請參閱[版本 2.11.0(3) 未請求輸入使用者名稱/密碼](https://github.com/git-for-windows/git/issues/1034)。

**可能的修正：**
+ 如果您嘗試使用 隨附的登入資料協助程式 AWS CLI，請考慮透過 HTTPS 與 Git 登入資料連線，而不是使用登入資料協助程式。為您的 IAM 使用者設定的 Git 登入資料與適用於 Windows 的 Git Credential Manager 相容，不同於 的登入資料協助程式 AWS CodeCommit。如需詳細資訊，請參閱[對於使用 Git 登入資料的 HTTPS 使用者](setting-up-gc.md)。

  如果您想要使用登入資料協助程式，請驗證 AWS CLI 是否設定為正確 AWS 區域、執行 **aws configure**命令，並檢閱顯示的資訊。如果 CodeCommit 儲存庫與針對 顯示的儲存庫 AWS 區域 不同 AWS CLI，您必須執行 **aws configure**命令，並將值變更為適合該區域的值。如需詳細資訊，請參閱[步驟 1：CodeCommit 的初始組態](setting-up-https-windows.md#setting-up-https-windows-account)。
+ 如果可能，請解除安裝並重新安裝適用於 Windows 的 Git。安裝適用於 Windows 的 Git 時，請清除在安裝 Git Credential Manager 公用程式時所用之選項的核取方塊。此 Credential Manager 與 AWS CodeCommit的登入資料協助程式不相容。如果您安裝了 Git Credential Manager 或其他登入資料管理公用程式，而且不想解除安裝它，您可以修改`.gitconfig`檔案並新增 CodeCommit 的登入資料管理：

  1. 開啟**控制面板**，選擇 **Credential Manager**，然後移除 CodeCommit 的任何預存登入資料。

  1. 在任何純文字編輯器 (例如記事本) 中開啟 `.gitconfig` 檔案。
**注意**  
如果您使用多個 Git 設定檔，您可能同時有本機和全域 `.gitconfig` 檔案。請務必編輯適當的檔案。

  1. 將以下區段新增到您的 `.gitconfig` 檔案：

     ```
     [credential "https://git-codecommit.*.amazonaws.com"]
         helper = !aws codecommit credential-helper $@ 
         UseHttpPath = true
     ```

  1. 儲存檔案，然後開啟新的命令列工作階段，之後再次嘗試連接。

  如果您想要在連線至 CodeCommit 儲存庫 AWS CodeCommit 時針對 使用登入資料協助程式，以及在連線至其他託管儲存庫時用於另一個登入資料管理系統，例如 GitHub 儲存庫，您也可以使用此方法。

  若要將使用的登入資料協助程式重設為預設值，您可以在執行 **git config** 命令時使用 **--system** 選項，而不是 **--global** 或 **--local**。
+ 如果是在 Windows 電腦上使用 Git 登入資料，您可以嘗試解決任何 RFC 不相符的問題，方法是在連線字串中包括您的 Git 登入資料使用者名稱。例如，若要解決此問題，並在美國東部 （俄亥俄） 區域中複製名為 *MyDemoRepo* 的儲存庫：

  ```
  git clone https://Your-Git-Credential-Username@git-codecommit.us-east-2.amazonaws.com/v1/repos/MyDemoRepo my-demo-repo
  ```
**注意**  
如果在您的 Git 登入資料使用者名稱中有一個 `@` 字元，則這種方法將沒有作用。您必須對該字元使用 URL 編碼 (也稱為 URL 逸出或 [% 編碼](https://en.wikipedia.org/wiki/Percent-encoding))。

# 故障診斷 Git 用戶端和 AWS CodeCommit
<a name="troubleshooting-git"></a>

以下資訊可以協助您對使用 Git 搭配 AWS CodeCommit 儲存庫時的常見問題進行故障診斷。如需對使用 HTTPS 或 SSH 時 Git 用戶端的相關問題進行故障診斷，也請參閱 [故障診斷 Git 登入資料 (HTTPS)](troubleshooting-gc.md)、[對 SSH 連線進行故障診斷](troubleshooting-ssh.md)和 [故障診斷登入資料協助程式 (HTTPS)](troubleshooting-ch.md)。

**Topics**
+ [Git 錯誤：錯誤：RPC 失敗；結果 = 56，HTTP 程式碼 = 200 嚴重：遠端意外掛斷](#troubleshooting-ge1)
+ [Git 錯誤：太多個參考更新命令](#troubleshooting-ge2)
+ [Git 錯誤：透過 HTTPS 推送在某些版本的 Git 中會損壞](#troubleshooting-ge3)
+ [Git 錯誤：'gnutls\$1handshake () 失敗'](#troubleshooting-ge4)
+ [Git 錯誤：Git 找不到 CodeCommit 儲存庫，或沒有存取儲存庫的許可](#troubleshooting-ge5)
+ [Windows 上的 Git：沒有支援的身分驗證方法可供使用 (publickey)](#troubleshooting-gw1)

## Git 錯誤：錯誤：RPC 失敗；結果 = 56，HTTP 程式碼 = 200 嚴重：遠端意外掛斷
<a name="troubleshooting-ge1"></a>

**問題：**推送大型變更、大量變更，或大型儲存庫時，長時間執行的 HTTPS 連線經常會因為網路連線問題或防火牆設定提前終止。

**可能的修正：**改為使用 SSH 推送，或當您移轉大型儲存庫時遵循[以遞增方式遷移儲存庫](how-to-push-large-repositories.md)中的步驟。此外，請確定您未超過個別檔案的大小限制。如需詳細資訊，請參閱[配額](limits.md)。

## Git 錯誤：太多個參考更新命令
<a name="troubleshooting-ge2"></a>

**問題：**每個推送的參考更新數量上限為 4,000 個。當推送包含超過 4,000 個參考更新時會顯示此錯誤。

**可能的修正：**嘗試使用 `git push --all` 和 `git push --tags` 來推送個別分支和標籤。如果您有太多個標籤，請將標籤分割成多個推送。如需詳細資訊，請參閱[配額](limits.md)。

## Git 錯誤：透過 HTTPS 推送在某些版本的 Git 中會損壞
<a name="troubleshooting-ge3"></a>

**問題：**Curl 更新至 7.41.0 的問題造成以 SSPI 為基礎的摘要身分驗證失敗。已知受影響的 Git 版本包含 1.9.5.msysgit.1。某些版本的適用於 Windows 的 Git 登入資料可能無法完全符合 [RFC 2617](https://tools.ietf.org/html/rfc2617#page-5) 和 [RFC 4559](https://tools.ietf.org/html/rfc4559#page-2)，這可能會導致使用 Git 登入資料或 AWS CLI隨附的登入資料協助程式的 HTTPS 連線發生問題。

**可能的修正：**檢查您的 Git 版本是否有已知問題，或使用舊版或更新版本的版本。如需 mysysgit 的更多資訊，請參閱 ​GitHub 論壇中的[對 HTTPS 的推送已損壞](https://github.com/msysgit/git/issues/332)。如需適用於 Windows 的 Git 版本問題的更多資訊，請參閱[ 版本 2.11.0(3) 未要求輸入使用者名稱/密碼](https://github.com/git-for-windows/git/issues/1034)。

## Git 錯誤：'gnutls\$1handshake () 失敗'
<a name="troubleshooting-ge4"></a>

**問題：**在 Linux 中，當您嘗試使用 Git 與 CodeCommit 儲存庫通訊時，會出現錯誤訊息，其中包含片語 `error: gnutls_handshake() failed`。

**可能的修正：**針對 OpenSSL 編譯 Git。針對一個方法，請參閱 Ask Ubuntu 論壇中的[連接到 HTTPS 伺服器時出現「錯誤：gnutls\$1handshake () 失敗」](http://askubuntu.com/questions/186847/error-gnutls-handshake-falied-when-connecting-to-https-servers)。

或者，使用 SSH 而不是 HTTPS 來與 CodeCommit 儲存庫通訊。

## Git 錯誤：Git 找不到 CodeCommit 儲存庫，或沒有存取儲存庫的許可
<a name="troubleshooting-ge5"></a>

**問題：**連線字串中的結尾斜線可能導致連線嘗試失敗。

**可能的修正：**確定您已為儲存庫提供正確的名稱和連線字串，而且沒有結尾斜線。如需詳細資訊，請參閱[連接到儲存庫](how-to-connect.md)。

## Windows 上的 Git：沒有支援的身分驗證方法可供使用 (publickey)
<a name="troubleshooting-gw1"></a>

**問題：**在您為 Windows 設定 SSH 存取之後，嘗試使用命令 (例如 **git pull**、**git push** 或 **git clone** 時)，您會看見存取遭拒錯誤。

**可能的修正：**此錯誤的最常見原因是您的電腦上存在 GIT\$1SSH 環境變數，並且已設定可支援其他連線公用程式，例如 PuTTY。若要修正此問題，請嘗試下列其中一項：
+ 開啟 Bash 模擬器，並在 Git 命令之前新增 `GIT_SSH_COMMAND="ssh"` 參數。例如，如果您嘗試複製儲存庫，不要輸入 **git clone ssh://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyDemoRepo my-demo-repo**，請輸入：

  ```
  GIT_SSH_COMMAND="ssh" git clone ssh://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyDemoRepo my-demo-repo
  ```
+ 重新命名或刪除 `GIT_SSH` 環境變數 (如果您已不再使用它)。然後開啟新的命令提示字元或 Bash 模擬器工作階段，並再次嘗試您的命令。

如需有關在 Windows 上使用 SSH 時對 Git 問題進行故障診斷的詳細資訊，請參閱 [對 SSH 連線進行故障診斷](troubleshooting-ssh.md)。

# 對存取錯誤和 進行故障診斷 AWS CodeCommit
<a name="troubleshooting-ae"></a>

以下資訊可以協助您對與 AWS CodeCommit 儲存庫連線時可能會看到的存取錯誤進行故障診斷。

**Topics**
+ [存取錯誤：當我從 Windows 連線至 CodeCommit 儲存庫時，系統會提示我輸入使用者名稱和密碼](#troubleshooting-ae1w)
+ [存取錯誤：連線至 CodeCommit 儲存庫時，公開金鑰遭拒](#troubleshooting-ae2)
+ [存取錯誤：連線至 CodeCommit 儲存庫時出現「超出速率」或「429」訊息](#troubleshooting-ae3)

## 存取錯誤：當我從 Windows 連線至 CodeCommit 儲存庫時，系統會提示我輸入使用者名稱和密碼
<a name="troubleshooting-ae1w"></a>

**問題：**當您嘗試使用 Git 與 CodeCommit 儲存庫通訊時，您會看到一個對話方塊，提示您輸入使用者名稱和密碼。

**可能的修正：**這可能是 Windows 的內建登入資料管理系統。根據組態的不同，執行以下其中一項：
+ 如果使用 HTTPS 搭配 Git 登入資料，系統不會將 Git 登入資料存放在系統中。請提供 Git 登入資料然後繼續。系統應該不會再次提示您輸入。如需詳細資訊，請參閱[對於使用 Git 登入資料的 HTTPS 使用者](setting-up-gc.md)。
+ 如果您使用 HTTPS 搭配 的登入資料協助程式 AWS CodeCommit，則它與 Windows 登入資料管理系統不相容。選擇**取消**。

  這也可能表示您在安裝適用於 Windows 的 Git 時也安裝 Git Credential Manager。Git Credential Manager 與 中包含的 CodeCommit 登入資料協助程式不相容 AWS CLI。請考慮解除安裝 Git Credential Manager。您也可以安裝和設定 **git-remote-codecommit**做為使用 CodeCommit 登入資料協助程式的替代方案。

  如需詳細資訊，請參閱[AWS CodeCommit 使用 git-remote-codecommit 對 HTTPS 連線的設定步驟](setting-up-git-remote-codecommit.md)、[對於 Windows 上使用 AWS CLI 登入資料協助程式的 HTTPS 連線](setting-up-https-windows.md)及[適用於 Windows 的 Git：我已安裝適用於 Windows 的 Git，但現在拒絕我存取儲存庫 (403)](troubleshooting-ch.md#troubleshooting-windowshttps)。

## 存取錯誤：連線至 CodeCommit 儲存庫時，公開金鑰遭拒
<a name="troubleshooting-ae2"></a>

**問題：**當您嘗試使用 SSH 端點與 CodeCommit 儲存庫通訊時，會出現錯誤訊息，其中包含片語 `Error: public key denied`。

**可能的修正：**此錯誤最常見的原因是您尚未完成 SSH 連接的設定。設定公有和私有 SSH 金鑰對，然後將公有金鑰與您的 IAM 使用者建立關聯。如需設定 SSH 的詳細資訊，請參閱[針對 Linux、macOS 或 Unix 上的 SSH 連線](setting-up-ssh-unixes.md)和[Windows 上的 SSH 連線](setting-up-ssh-windows.md)。

## 存取錯誤：連線至 CodeCommit 儲存庫時出現「超出速率」或「429」訊息
<a name="troubleshooting-ae3"></a>

**問題：**當您嘗試與 CodeCommit 儲存庫通訊時，會顯示「超過速率」或錯誤碼為「429」的訊息。通訊大幅減慢或失敗。

**原因：**無論是來自應用程式、、 AWS CLI Git 用戶端或 的所有 CodeCommit 呼叫 AWS 管理主控台，都會受到每秒請求數上限和整體作用中請求的約束。您無法超過任何 Amazon Web Services 帳戶的允許請求率上限 AWS 區域。如果請求超過最高速率，您會收到錯誤，並且您的 Amazon Web Services 帳戶會暫時調節進一步的呼叫。在限流期間，您與 CodeCommit 的連線會變慢，而且可能會失敗。

**可能的修正：**採取步驟來減少 CodeCommit 的連線或呼叫數量，或分散請求。一些可考慮的方法：
+ **在請求中實作抖動，特別是定期輪詢請求**

  如果您有定期輪詢 CodeCommit 的應用程式，且此應用程式正在多個 Amazon EC2 執行個體上執行，請引入抖動 （隨機延遲量），讓不同的 Amazon EC2 執行個體不會同時輪詢。我們建議從 0 到 59 秒的亂數，在一分鐘的時間範圍內平均分配輪詢機制。
+ **使用事件型架構，而不是輪詢**

  改用事件型架構來取代輪詢，只在發生事件時才進行呼叫。請考慮針對[AWS CodeCommit 事件](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/EventTypes.html#codecommit_event_type)使用 CloudWatch Events 通知來觸發工作流程。
+ **實作 API 和自動化 Git 動作的錯誤重試與指數退避**

  錯誤重試與指數退避可協助限制呼叫率。每個 AWS 開發套件實作自動重試邏輯和指數退避演算法。對於自動化 Git 推送和 Git 提取，您可能需要實作自己的重試邏輯。如需詳細資訊，請參閱[錯誤重試和指數退避 AWS](https://docs.aws.amazon.com/general/latest/gr/api-retries.html)。
+ **在 AWS 支援中心請求提高 CodeCommit 服務配額**

  若想收到服務限制提高，您必須確認您已遵守此處提供的建議，包括實作錯誤重試或指數退避方法。在您的請求中，您還必須提供受限流問題影響的 、 AWS 區域 Amazon Web Services 帳戶和時間範圍。



# 故障診斷組態錯誤和 AWS CodeCommit
<a name="troubleshooting-cf"></a>

以下資訊可協助您對與 AWS CodeCommit 儲存庫連線時可能看到的組態錯誤進行故障診斷。

**Topics**
+ [組態錯誤：無法在 macOS 上設定 AWS CLI 登入資料](#troubleshooting-cf1)

## 組態錯誤：無法在 macOS 上設定 AWS CLI 登入資料
<a name="troubleshooting-cf1"></a>

**問題：**當您執行 `aws configure` 來設定 時 AWS CLI，您會看到`ConfigParseError`訊息。

**可能的修正：**此錯誤最常見的原因是登入資料檔案已存在。瀏覽到 \$1/.aws 並尋找名為 `credentials` 的檔案。重新命名或刪除該檔案，然後再次執行 **aws configure**。

# 對主控台錯誤和 進行故障診斷 AWS CodeCommit
<a name="troubleshooting-cs"></a>

以下資訊可以協助您對使用 AWS CodeCommit 儲存庫時的主控台錯誤進行故障診斷。

**Topics**
+ [存取錯誤：從主控台或 對 CodeCommit 儲存庫拒絕加密金鑰存取 AWS CLI](#troubleshooting-ae3)
+ [加密錯誤：無法解密儲存庫](#troubleshooting-ck1)
+ [主控台錯誤：無法從主控台瀏覽 CodeCommit 儲存庫中的程式碼](#troubleshooting-cs1)
+ [顯示錯誤：無法檢視檔案或檔案之間的比較](#troubleshooting-dd1)

## 存取錯誤：從主控台或 對 CodeCommit 儲存庫拒絕加密金鑰存取 AWS CLI
<a name="troubleshooting-ae3"></a>

**問題：**當您嘗試從主控台或 存取 CodeCommit 時 AWS CLI，會出現錯誤訊息，其中包含片語 `EncryptionKeyAccessDeniedException`或 `User is not authorized for the KMS default key for CodeCommit 'aws/codecommit' in your account`。

**可能的修正：**此錯誤的最常見原因是您的 Amazon Web Services 帳戶未訂閱 AWS Key Management Service，這是 CodeCommit 的必要項目。開啟 AWS KMS 主控台，選擇**AWS 受管金鑰**，然後選擇**立即開始使用**。如果您看到目前尚未訂閱 AWS Key Management Service 服務的訊息，請依照該頁面上的指示進行訂閱。如需 CodeCommit 和 的詳細資訊 AWS Key Management Service，請參閱 [AWS KMS 和 加密](encryption.md)。

## 加密錯誤：無法解密儲存庫
<a name="troubleshooting-ck1"></a>

**問題：**當您嘗試從主控台或 存取 CodeCommit 儲存庫時 AWS CLI，會出現錯誤訊息，其中包含片語 `Repository can't be decrypted`。

**可能的修正：**此錯誤的最常見原因是用於加密和解密此儲存庫資料的 AWS KMS 金鑰不是作用中或待刪除。CodeCommit AWS Key Management Service需要 中的作用中 AWS 受管金鑰 或客戶受管金鑰。開啟 AWS KMS 主控台、選擇 **AWS 受管金鑰**或 **客戶受管金鑰**，並確認用於儲存庫的金鑰存在於 AWS 區域 儲存庫所在的 中，且其狀態為**作用中**。如需 CodeCommit 和 的詳細資訊 AWS Key Management Service，請參閱 [AWS KMS 和 加密](encryption.md)。

**重要**  
如果用於加密和解密儲存庫資料的金鑰已永久刪除或無法存取，則無法存取使用該金鑰加密的儲存庫中的資料。

## 主控台錯誤：無法從主控台瀏覽 CodeCommit 儲存庫中的程式碼
<a name="troubleshooting-cs1"></a>

**問題：**嘗試從主控台瀏覽儲存庫的內容時，出現拒絕存取的錯誤訊息。

**可能的修正：**此錯誤的最常見原因是套用至 Amazon Web Services 帳戶的 IAM 政策拒絕從 CodeCommit 主控台瀏覽程式碼所需的一或多個許可。如需 CodeCommit 存取許可和瀏覽的詳細資訊，請參閱 [的身分驗證和存取控制 AWS CodeCommit](auth-and-access-control.md)。

## 顯示錯誤：無法檢視檔案或檔案之間的比較
<a name="troubleshooting-dd1"></a>

**問題：**當您嘗試在 CodeCommit 主控台中檢視檔案或檔案的兩個版本之間的比較時，出現錯誤，指出檔案或差異太大而無法顯示。

**可能的修正：**此錯誤的最常見原因是檔案太大而無法顯示、包含一或多個超過檔案中單行字元限制的行，或兩個版本檔案之間的差異超過行限制。如需詳細資訊，請參閱[配額](limits.md)。若要檢視檔案或檔案版本之間的差異，您可以在您偏好的 IDE 中於本機開啟檔案、使用 Git diff 工具，或執行 **git diff**命令。

# 對觸發和 進行故障診斷 AWS CodeCommit
<a name="troubleshooting-ti"></a>

以下資訊可能有助於您對 AWS CodeCommit中的觸發問題進行疑難排解。

**Topics**
+ [觸發錯誤：儲存庫觸發未如預期般地執行](#troubleshooting-ti1)

## 觸發錯誤：儲存庫觸發未如預期般地執行
<a name="troubleshooting-ti1"></a>

**問題：**為儲存庫設定的一或多個觸發似乎未執行，或未如預期般地執行。

**可能的修正：**如果觸發的目標是 AWS Lambda 函數，請確定您已設定函數的資源政策供 CodeCommit 存取。

或者，編輯觸發，並確保已選取要據以觸發動作的事件，而且觸發的分支包含您想看到動作回應的分支。嘗試將觸發的設定變更為 **All repository events (所有儲存庫事件)** 和 **All branches (所有分支)**，然後測試觸發。如需詳細資訊，請參閱[編輯儲存庫的觸發](how-to-notify-edit.md)。

## 開啟偵錯
<a name="troubleshooting-debug"></a>

**問題：**我想要開啟偵錯，以取得儲存庫和 Git 儲存庫執行命令情況的更多資訊。

**可能的修正：**嘗試下列項目：

1. 在終端機或命令提示字元中，於您的本機電腦上執行下列命令，之後再執行 Git 命令：

   在 Linux、macOS 或 Unix 上：

   ```
   export GIT_TRACE_PACKET=1
   export GIT_TRACE=1
   export GIT_CURL_VERBOSE=1
   ```

   在 Windows 上：

   ```
   set GIT_TRACE_PACKET=1
   set GIT_TRACE=1
   set GIT_CURL_VERBOSE=1
   ```
**注意**  
設定 `GIT_CURL_VERBOSE` 僅適用 HTTPS 連線。SSH 不會使用 `libcurl` 程式庫。

1. 若要取得 Git 儲存庫的詳細資訊，建議您安裝最新版本的 [git-sizer](https://github.com/github/git-sizer?tab=readme-ov-file#getting-started)。遵循適用於您作業系統和環境的 公用程式安裝說明。安裝後，在命令列或終端機將目錄變更為本機儲存庫，然後執行下列命令：

   ```
   git-sizer --verbose
   ```
**提示**  
考慮將命令的輸出儲存到檔案，以便在疑難排解問題時輕鬆與他人共用，特別是隨著時間的推移。