对 SSH 连接进行故障排除AWS CodeCommit - AWS CodeCommit

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

对 SSH 连接进行故障排除AWS CodeCommit

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

访问错误:公钥已成功上传到 IAM,但在 Linux、macOS 或 Unix 系统上连接失败

问题:当您尝试连接到 SSH 端点以与之通信时CodeCommit存储库,无论是在测试连接还是克隆存储库时,连接都会失败或被拒绝。

可能的修复方法:在 IAM 中分配给您的公钥的 SSH 密钥 ID 可能与您的连接尝试无关。你可能没有配置配置文件,您可能无法访问配置文件,其他设置可能是阻止成功读取配置文件,您可能提供了错误的密钥 ID,或者您可能提供了 IAM 用户的 ID 而不是密钥 ID。

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


                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 或 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-codecommitus-gov-west-1.amazonaws.com MD5 9f:6c:19:3b:88:cd:e8:88:1b:9c:98:6a:95:31:8a:69
git-codecommitus-gov-west-1.amazonaws.com SHA256 djXQoSIFcg8vHe0KVH1xW/gOF9X37tWTqu4Hkng75x4
git-codecommitus-gov-east-1.amazonaws.com MD5 00:8d:b5:55:6f:05:78:05:ed:ea:cb:3f:e6:f0:62:f2
git-codecommitus-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 格式的公钥,并有其他要求,如中所述将 SSH 密钥与CodeCommitIAM 用户指南。如果提供其他格式的公有密钥,或者密钥包含的位数不够,就会出现此错误。

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

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

有关 IAM 中 SSH 密钥要求的更多信息,请参阅将 SSH 密钥与CodeCommitIAM 用户指南

我需要访问CodeCommit多个具有 SSH 凭证的亚马逊云科技账户中的存储库

问题:我想设置 SSH 访问权限CodeCommit存储库位于多个亚马逊云科技账户中。

可能的修复方法:您可以为每个亚马逊云科技账户创建唯一的 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.

在此配置中,你可以将 “git-codecommit.us-east-1.amazonaws.com” 替换为 “codecommit-2”。例如,要克隆第二个亚马逊云科技账户中的存储库,请执行以下操作:

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)。选择 Open(打开)。当出现 PuTTY 安全提醒的提示时,选择 Yes (是) 永久缓存密钥。

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

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

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

问题:当您尝试配置公私密钥对时,您会收到错误消息。

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

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

问题:当您尝试使用 SSH 终端节点与某人通信时CodeCommit存储库,将显示一条包含该短语的错误消息Error: public key denied

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