AWS CodeCommit
用户指南 (API 版本 2015-04-13)

对到 AWS CodeCommit 的 SSH 连接进行问题排查

以下信息可帮助您排查在使用 SSH 连接到 CodeCommit 存储库时的常见问题。

访问错误:已将公有密钥成功上传到 IAM,但在 Linux, macOS, or Unix 系统上进行连接时失败

问题:尝试连接 SSH 终端节点以与 CodeCommit 存储库通信时,测试连接或克隆存储库的操作出现连接失败或连接被拒绝。

可能的修复措施:分配给您在 IAM 中的公有密钥的 SSH 密钥 ID 可能未关联到您的连接。您可能尚未配置配置文件、您可能无权访问配置文件、其他设置可能导致系统无法成功读取配置文件、您可能提供了错误的密钥 ID 或者您提供了 IAM 用户 ID 而不是密钥 ID。

您可以通过 IAM 控制台在您的 IAM 用户的配置文件中找到 SSH 密钥 ID:


                IAM 控制台中的 SSH 密钥 ID

注意

如果您上传了多个 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, or 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, or Unix 上的 SSH 连接Windows 上的 SSH 连接 中的说明操作。

如果按照上述步骤操作后,问题仍然存在,可能是有人正在尝试实施中间人攻击。如果看到下面的消息,请键入 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.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.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-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+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

IAM 错误:尝试向 IAM 添加公有密钥时出现“格式无效”错误

问题:在 IAM 中,设置对 CodeCommit 使用 SSH 连接,在尝试添加公有密钥时,出现包含 Invalid format 字样的错误消息。

可能的修复措施:IAM 只接受 OpenSSH 格式的公有密钥。如果提供其他格式的公有密钥,或者密钥包含的位数不够,就会出现此错误。在 Windows 计算机上生成公有-私有密钥对时,通常会发生这一问题。要生成密钥对并复制 IAM 所需的 OpenSSH 格式,请参阅SSH 和 Windows:为 Git 和 CodeCommit 设置公有密钥和私有密钥

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

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

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