SSH 与 AWS CodeCommit的连接问题排查 - AWS CodeCommit

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
注意

如果您 IDs 上传了多个 SSH 密钥,则密钥将按密钥 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 连接

访问错误:已将公有密钥成功上传到 IAM 并且 SSH 测试成功,但在 Windows 系统上进行连接时失败

问题:当您尝试使用 SSH 端点克隆存储库或与 CodeCommit 存储库通信时,会出现一条包含该短语的错误消息No supported authentication methods available

可能的修复措施:导致该错误的最常见原因是您设置的某个 Windows 系统环境变量指示 Windows 在您尝试使用 SSH 时使用其他的程序。例如,您可能设置了 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 版本要求在 Windows 命令行中通过 SSH 进行连接时必须将 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、macOS 或 Unix 上的 SSH 连接适用于 Windows 上的 SSH 连接 中的说明操作。

如果您已按照这些步骤操作但问题仍然存在,则可能有人在尝试 man-in-the-middle攻击。如果看到下面的消息,请键入 no 并按 Enter。

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

在继续连接之前,请确保 CodeCommit 连接的指纹和公钥与 SSH 设置主题中记录的指纹和公钥一致。

的公共指纹 CodeCommit
服务器 加密哈希类型 指纹
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+8isPtotBoY
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+Rk4UbhPv6Es22mSB3uTBojfPXIno
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+gHas80HY3DqbP4yanCDFhqDVjseefVbHEXqH2Ec
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+VKB0jpRaG/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+Xpx4Kddb6p45j4RazIJ4IhAMD8k29itOfE
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+jn8/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+ikzILnKBsZz7t9+CFdSJjKbLI
git-代码提交。 us-gov-west-1.amazonaws.com MD5 9f:6c:19:3b:88:cd:e8:88:1b:9c:98:6a:95:31:8a:69
git-代码提交。 us-gov-west-1.amazonaws.com SHA256 djXQoSIFcg8vHe0KVH1xW/gOF9X37tWTqu4Hkng75x4
git-代码提交。 us-gov-east-1.amazonaws.com MD5 00:8d:b5:55:6f:05:78:05:ed:ea:cb:3f:e6:f0:62:f2
git-代码提交。 us-gov-east-1.amazonaws.com SHA256 fVb+R0z7qW7minenW+rUpAABRCRBTCzmETAJEQrg98
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+V8jl7iuAcjqXsG7zkqoUZZmmhYYFBq1wQ
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+NToCGgjrHekiBuOl0ad7ROGEsz+DBLXOd/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.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.cn SHA256 IYUXxH2OpTDsyYMLIp+JY8CTLS4UX+ZC5JVZXPRaxc8
git-codecommit.cn-northwest-1.amazonaws.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.cn SHA256 wqjd6eHd0+mOBx+dCNuL0omUoCNjaDtZiEpWj5TmCfQ
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 添加公有密钥时,出现“格式无效”错误

问题:在 IAM 中,尝试设置为使用 SSH 时 CodeCommit,当您尝试添加公钥Invalid format时,会出现一条错误消息,其中包含该短语。

可能的修复措施:IAM 要求公有密钥必须采用 ssh-rsa 格式或 PEM 格式进行编码。它仅接受 OpenSSH 格式的公钥,并具有其他要求,如 IAM 用户指南中的 “使用 SSH 密钥” CodeCommit 中所述。如果提供其他格式的公有密钥,或者密钥包含的位数不够,就会出现此错误。

  • 当您复制 SSH 公钥时,您的操作系统可能引入了换行符。确保添加到 IAM 的公有密钥中没有换行符。

  • 某些 Windows 操作系统不使用 OpenSSH 格式。要生成密钥对并复制 IAM 要求的 OpenSSH 格式,请参阅第 3 步:为 Git 设置公钥和私钥以及 CodeCommit

有关 IAM 中 SSH 密钥要求的更多信息,请参阅 IA M 用户指南 CodeCommit中的 SSH 密钥与一起使用

我需要使用 SSH 凭证访问多个 Amazon Web Services 账户中的 CodeCommit 存储库

问题:我想在多个 Amazon Web Services 账户中设置对 CodeCommit存储库的 SSH 访问权限。

可能的修复方法:您可以创建唯一的 SSH public/private key pairs for each Amazon Web Services account and configure IAM with each key. You can then configure your ~/.ssh/config 文件,其中包含与公钥关联的每个 IAM 用户 ID 的相关信息。例如:

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

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
  • 如果您安装了 PuTTY,请打开 PuTTY,然后在主机名(或 IP 地址)中输入要 CodeCommit 访问的终端节点(例如 git-codecommit.us-east-2.amazonaws.com)。选择打开。当出现 PuTTY 安全提醒的提示时,选择 Yes (是) 永久缓存密钥。

  • 重命名或删除不再使用的 GIT_SSH 环境变量。然后,打开新的命令提示符或 Bash 仿真器会话,再次尝试您的命令。

有关其他解决方案的信息,请参阅 Stack Overflow 上的 Git clone/pull continually freezing at Store key in cache

公有密钥格式在某些 Linux 发行版中需要规范化

问题:尝试配置公有-私有密钥对时,收到一个错误。

可能的修复措施:某些 Linux 发行版需要在 ~/.ssh/config 文件中添加额外的配置行,以指定公有密钥的可接受类型。有关更多信息,请参阅有关 PubkeyAcceptedKeyTypes 的具体发行版文档。

访问错误:连接到 CodeCommit存储库时 SSH 公钥被拒绝

问题:当您尝试使用 SSH 端点与 CodeCommit 存储库通信时,会出现一条包含该短语的错误消息Error: public key denied

可能的修复措施:导致出现此错误的最常见原因是您尚未完成 SSH 连接设置。请配置公有和私有 SSH 密钥对,然后将公有密钥与您的 IAM 用户相关联。有关配置 SSH 的更多信息,请参阅适用于 Linux、macOS 或 Unix 上的 SSH 连接适用于 Windows 上的 SSH 连接