19

很难弄清楚如何让 AWS CodeCommit 与标准 SSH 身份验证一起工作。看到另一个这样的话题,但没有答案,我还不允许发表评论。这是在 Windows 上使用 Git Bash。

复制步骤

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

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 调试日志.ssh/config

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

Host github.com
  LogLevel DEBUG3
4

7 回答 7

24

您似乎错过了设置 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。

于 2016-01-04T17:19:30.160 回答
2

我的情况有点不同。

“安全凭证”选项卡同时具有“访问密钥”和“AWS CodeCommit 的 SSH 密钥”。确保您使用的是 CodeCommit 密钥 ID。

于 2019-11-07T18:52:53.277 回答
2

在此处输入图像描述这有效

Host git-codecommit.us-west-2.amazonaws.com
    User SSHKEYID
    IdentityFile ~/.ssh/id_rsa
于 2020-06-24T10:02:41.903 回答
2

制作时尝试使用 sshkey-IDgit clone 在此处输入图像描述

所以 git clone 应该是这样的:

git clone ssh://<SSHKEY-ID>@git-codecommit.<REGION>.amazonaws.com/v1/repos/<REPO-NAME>
于 2021-03-22T10:37:54.670 回答
1

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

于 2020-06-05T20:13:16.960 回答
1

请遵循 AWS 的以下文档

Linux

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

视窗

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

我已经测试了仅适用于 Windows 的 SSH 连接,请按照上述链接测试 Linux 的 SSH 连接;

以下是在 Windows 10 上为 codecommit 设置 SSH 连接的步骤。

第1步

CodeCommit 的初始配置(请参阅文档链接)

第2步

安装 Git(请参考文档链接)

第 3 步

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

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

运行此命令后,它应该在 C:\Users{user name here}.ssh 目录中生成公钥(.pub)和私钥

第4步

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

第 5 步:

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

第 6 步

创建 C:\Users{此处的用户名}.ssh\config 文件(没有文件扩展名,在 Windows 中将其保存为 config 并选择所有文件类型选项。Config.txt 很可能不起作用)。将以下内容粘贴到 C:\Users{user name here}.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
于 2021-03-02T08:23:57.933 回答
0

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

在此处输入图像描述

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

并再次推动。

于 2022-02-02T15:52:41.180 回答