无法使用 SSH 访问 AWS CodeCommit

Can't access AWS CodeCommit with SSH

在弄清楚如何让 AWS CodeCommit 与标准 SSH 身份验证一起工作时遇到了难以置信的困难。看到另一个类似的话题,但没有答案,我还不能发表评论。这是在 Windows 使用 Git Bash.

重现步骤

  1. 已创建具有完全权限的 IAM 用户 (AwsAdministrator)
  2. 来自 Git Bash 在 ~/.ssh
  3. "cat id_rsa.pub" 并将输出复制到剪贴板
  4. 在 IAM 控制台中,单击按钮添加 SSH 密钥并粘贴到输入字段中。单击保存。
  5. 尝试访问 CodeCommit 存储库(在本例中尝试推送)并获取 "Permission denied"。

Git + SSH 输出

这是我使用 DEBUG3 日志从 SSH 获得的结果:

debug3: authmethod_is_enabled publickey
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /c/Users/Dan/.ssh/id_rsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug1: Server accepts key: pkalg ssh-rsa blen 535
debug2: input_userauth_pk_ok: fp SHA256:<omitted>
debug3: sign_and_send_pubkey: RSA SHA256:<same-as-above>
debug1: Authentications that can continue: publickey
debug2: we did not send a packet, disable method
debug1: No more authentication methods to try.
Permission denied (publickey).
fatal: Could not read from remote repository.

为了比较,这是我使用与 GitHub:

完全相同的 SSH 密钥得到的结果
debug3: authmethod_is_enabled publickey
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /c/Users/Dan/.ssh/id_rsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug1: Server accepts key: pkalg ssh-rsa blen 535
debug2: input_userauth_pk_ok: fp SHA256:<same-as-above>
debug3: sign_and_send_pubkey: RSA SHA256:<same-as-above>
debug1: Authentication succeeded (publickey).
Authenticated to github.com ([192.30.252.130]:22).

以上输出来自 运行 一个正常的 git 命令,例如 git push origin master.ssh/config 中启用了 ssh 调试日志记录:

Host git-codecommit.us-east-1.amazonaws.com
  LogLevel DEBUG3

Host github.com
  LogLevel DEBUG3

您似乎错过了设置 SSH 的步骤。您需要将此信息添加到您的 .ssh/config 文件中:

Host git-codecommit.us-east-1.amazonaws.com
   User Your-SSH-Key-ID, such as APKAEIBAERJR2EXAMPLE
   IdentityFile Your-Private-Key-File, such as ~/.ssh/codecommit_rsa or ~/.ssh/id_rsa

您可以从 IAM 控制台获取 Your-SSH-Key-ID。

我的情况有点不同。

"Security credentials" 选项卡同时包含 "Access keys" 和 "SSH keys for AWS CodeCommit"。确保您使用的是 CodeCommit 密钥 ID。

确保配置文件未另存为 txt 文件并使用 SSH 密钥 ID,而不是访问

有效

Host git-codecommit.us-west-2.amazonaws.com
    User SSHKEYID
    IdentityFile ~/.ssh/id_rsa

请遵循 AWS 的以下文档

Linux

https://docs.aws.amazon.com/codecommit/latest/userguide/setting-up-ssh-unixes.html

Windows

https://docs.aws.amazon.com/codecommit/latest/userguide/setting-up-ssh-windows.html

我已经测试过只为 windows 设置 SSH 连接,请按照上述 link;

测试 Linux 的 SSH 连接

以下是为 Windows 10 上的代码提交设置 SSH 连接的步骤。

步骤 1

CodeCommit 初始配置(请参考文档link)

步骤 2

安装Git(请参考文档link)

步骤 3

通过运行以下命令生成ssh密钥:

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

在 运行 这个命令之后,它应该在 C:\Users{用户名}.ssh 目录public 中生成 public 密钥(.pub)和私钥

步骤 4

登录aws管理控制台,进入 IAM-->用户--> Select目标用户-->安全凭证选项卡-->AWS CodeCommit 的 SSH 密钥 然后单击上传 ssh 密钥。复制粘贴 public 密钥的内容,例如 C:\Users{此处的用户名}.ssh\id_rsa.pub 并保存 changes.But 您可以为公钥选择不同的名称(id_rsa.pub) 同时使用命令 ssh-keygen -t rsa -b 4096 -C "your_email@example.com".

第 5 步:

上传 public 密钥后,复制 SSH 密钥 ID。

步骤 6

创建 C:\Users{用户名}.ssh\config 文件(没有文件扩展名,在 windows 中将其保存为配置和 select 所有文件类型选项。 Config.txt 很可能行不通)。 将以下内容粘贴到 C:\Users{此处为用户名}.ssh\config 文件:

Host git-codecommit.*.amazonaws.com
  User {copy SSH key ID here}
  IdentityFile ~/.ssh/{copy name of the public key here }
  
Host git-codecommit.*.amazonaws.com
  User THISISEXMAPLE123
  IdentityFile ~/.ssh/id_rsa
  

步骤 7

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

制作时尝试使用ssh key-ID git clone

到 git 克隆应该如下所示:

git clone ssh://<SSHKEY-ID>@git-codecommit.<REGION>.amazonaws.com/v1/repos/<REPO-NAME>

AWS 核心配置的变化各不相同。您可能获得了所有正确的配置,但仍然存在连接问题。要直接和明确。

尝试将默认的 git url 来源从旧的更改为 @git-codecomitxxxxxxxx/v1/repos/xxxxx 确保密钥服务作为存储库的用户所有者

再按一次。