疑難排解 SSH 連線至AWS CodeCommit - AWS CodeCommit

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

疑難排解 SSH 連線至AWS CodeCommit

以下資訊可以協助您對使用 SSH 來連接 CodeCommit 儲存庫時的常見問題進行故障診斷。

存取錯誤:公開金鑰已成功上傳至 IAM,但在 Linux、macOS 或 Unix 系統上連線失敗

問題:當您嘗試連接到 SSH 端點以與CodeCommit存儲庫,無論是在測試連接或克隆存儲庫時,連接都會失敗或被拒絕。

可能的修正:指派給 IAM 中公開金鑰的 SSH 金鑰 ID 可能與您的連線嘗試不相關聯。您可能尚未配置配置文件,您可能無法存取組態檔案,另一個設定可能會阻止成功讀取設定檔、您可能提供了錯誤的金鑰 ID,或者您可能提供 IAM 使用者的 ID 而非金鑰 ID。

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

IAM 主控台中的安全殼層金鑰識別碼
注意

如果您已上傳一個以上的 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 Linux Linux Linux Linux Linux Linux Linux Linux Linux Linux Linux Linux Linux Linux Linux Linux Linux Linux Linux Linux

存取錯誤:公開金鑰已成功上傳至 IAM,並成功測試 SSH,但 Windows 系統上的連線失敗

問題:當您嘗試使用 SSH 端點來克隆或與CodeCommit儲存庫時,會出現包含該片語的錯誤訊息No supported authentication methods available

可能的修正:此錯誤最常見的原因是,當您嘗試使用 SSH 時,您的 Windows 系統環境變數集將 Windows 導向使用另一個程式。例如,您可能已設定 GIT_SSH 變數以指向其中一個 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 儲存庫時無法建立主機的真偽

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

可能的修正:您的登入資料可能未正確設定。請遵循Linux Linux Linux Linux Linux Linux Linux Linux Linux Linux Linux Linux Linux Linux Linux Linux Linux Linux Linux Linux Linux適用於 Windows 上的 SSH 連線中的指示。

如果您按照這些步驟操作並且問題仍然存在,則可能有人嘗試man-in-the-middle攻擊。當您看到下列訊息時,請輸入 no 並按 Enter 鍵。

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

請確定 CodeCommit 的指紋和公有金鑰與 SSH 設定主題中所述相符,再繼續進行連線。

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

IAM 錯誤:嘗試將公鑰添加到 IAM 時出現「格式無效」

問題:在 IAM 中,當嘗試設置使用 SSH 時CodeCommit時,會出現包含該片語的錯誤訊息Invalid format當您嘗試添加您的公鑰時。

可能的修正:IAM 要求公開金鑰必須以 ssh-rsa 格式或 PEM 格式進行編碼。它僅接受 OpenSSH 格式的公鑰,並且具有中規定的其他要求搭配使用 SSH 金鑰CodeCommitIAM 使用者指南。如果您提供另一種格式的公有金鑰,或金鑰未包含必要的位元數,您會看到此錯誤。

  • 當您複製 SSH 公開金鑰時,您的作業系統可能已經引入換行符號。請確定您新增至 IAM 的公開金鑰中沒有換行符號。

  • 某些 Windows 作業系統不會使用 OpenSSH 格式。若要產生金鑰配對並複製 IAM 所需的 OpenSSH 格式,請參閱步驟 3:設定 Git 和 CodeCommit 的公有和私有金鑰

如需 IAM 中 SSH 金鑰需求的詳細資訊,請參閱搭配使用 SSH 金鑰CodeCommitIAM 使用者指南

我需要訪問CodeCommit使用 SSH 登入資料存放在多個亞馬遜網路服務帳戶

問題:我想設置 SSH 訪問CodeCommit儲存庫位於多個亞馬遜網路服務帳戶中。

可能的修正:您可以為每個 Amazon 網路服務帳戶建立唯一的 SSH 公開/私密金鑰配對,並使用每個金鑰設定 IAM。然後,您可以使用與公鑰關聯的每個 IAM 用戶 ID 的相關信息配置〜 /.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.

在這種配置中,您將能夠用「代碼提交 2」替換「Git 代碼提交。例如,若要在第二個 Amazon 網路服務帳戶中複製儲存庫:

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

要為您的存儲庫設置遠程,請運行git remote add。例如:

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

如需更多範例,請參閱這個論壇帖子這個貢獻GitHub

Windows 上的 Git:嘗試使用 SSH 連接時,Bash 模擬器或命令列凍結

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

可能的修正:此錯誤最常見的原因是 Git 環境設定為使用 OpenSSH 以外的方法進行身分驗證 (可能是 PuTTY)。已知這在某些組態中快取金鑰時會造成問題。若要修正此問題,請嘗試下列其中一項:

  • 開啟 Bash 模擬器,並在 Git 命令之前新增 GIT_SSH_COMMAND="ssh" 參數。例如,如果您嘗試推送至儲存庫,不要輸入 git push,請輸入:

    GIT_SSH_COMMAND="ssh" git push
  • 如果您安裝了膩子,請打開膩子,然後在主機名稱 (或 IP 位址),輸入CodeCommit您想要達到的端點(例如,git 代碼提交. 選擇 Open (開啟)。當出現 PuTTY 安全提醒的提示時,請選擇 Yes (是),以永久快取金鑰。

  • 重新命名或刪除 GIT_SSH 環境變數 (如果您已不再使用它)。然後開啟新的命令提示字元或 Bash 模擬器工作階段,並再次嘗試您的命令。

關於其他解決方案,請參閱 Stack Overflow 上Git 複製/提取在快取的存放區金鑰中持續凍結

公鑰格式需要 Linux 的某些發行版中的規範

問題:當您嘗試設定公用-私密金鑰組時,您會收到錯誤訊息。

可能的修正:某些 Linux 發行版需要在~/.ssh/config指定接受的公開金鑰類型的檔案。如需詳細資訊,請參閱您發行版本的相關文件PubkeyAcceptedKeyTypes

訪問錯誤:連接到一個 SSH 公鑰被拒絕CodeCommit儲存庫

問題:當您嘗試使用 SSH 端點與CodeCommit儲存庫時,會出現包含該片語的錯誤訊息Error: public key denied

可能的修正:此錯誤最常見的原因是您尚未完成 SSH 連接的設定。設定公開和私密安全殼層金鑰配對,然後將公開金鑰與 IAM 使用者建立關聯。如需設定 SSH 的詳細資訊,請參閱Linux Linux Linux Linux Linux Linux Linux Linux Linux Linux Linux Linux Linux Linux Linux Linux Linux Linux Linux Linux Linux適用於 Windows 上的 SSH 連線