通过 ssh 将 EC2 连接到 Git

Posted

技术标签:

【中文标题】通过 ssh 将 EC2 连接到 Git【英文标题】:Connect EC2 to Git by ssh 【发布时间】:2021-11-02 01:15:41 【问题描述】:

拥有一个带有 Git 存储库的 EC2 实例,我需要通过 ssh-key 对其进行更新。

我试过了:

    authorized_keys 添加到 GitHub。 --> 不工作,也不是正确的方法。

    创建一个新的 ssh-key,将其添加到 EC2 控制台对密钥并添加到 GitHub。由于 ssh-add 在 EC2 实例上不起作用,@Biswajit Mohanty 建议我运行 ssh -T git@github.com,并得到了正确的答案,但仍然得到“权限被拒绝(公钥)。致命:拉取时无法从远程存储库中读取。

我已经按照应有的方式配置了 .git/config:

    sshCommand = "ssh -i ~/.ssh/id_rsa.pub"

[远程“原点”] url = ssh://git@github.com/ArantecEnginheria/smartyplanet.git

关于成功执行“拉”并将代码更新到该服务器的任何建议?

【问题讨论】:

请添加有关您采取的步骤和您看到的错误的更多详细信息。您通过 AWS 控制台生成的密钥对是否已分配给您的 EC2 实例? Github 中该密钥对的公钥是否已授权?你是如何在 EC2 实例上执行 git pull 的? 【参考方案1】:

您通常不会将 authorized_keys 添加到 GitHub。您register a public SSH key 到您的GitHub user profile,以便建立正确的身份验证。

如果您需要从 EC2 实例推送到 GitHub 存储库(即来自 EC2 instance session),则所述会话应包括 ~/.ssh/id_rsa~/.ssh/id_rsa.pub:私钥/公钥对,以及公共密钥对如上所述注册到 GitHub。

【讨论】:

@NorthmaN Mohanty 只是重复了我在回答中提到的内容,它基于默认的 id_rsa 键,这意味着不需要 ~/.ssh/config(在 EC2 实例上)。 是的,伙计!你们俩都说应该怎么做...理论很清楚,但实际上并非如此...我在自己的计算机上做了同样的事情,并且工作...(ssh-add the ssh-key too,但是在 EC2 中不起作用...)我是一名开发人员,这种东西离我很远,我只需要推送/拉取代码,而不是处理 ssh 密钥、IP ......非常感谢您的时间。 @NorthmaN 那么您是否尝试过使用默认密钥,并且没有任何 ssh 配置? 男人!!你是术士!!有用!!不需要定义 sshCommand,只需要在配置文件 url 参数中更改协议(https 到 ssh)即可!谢谢!【参考方案2】:
ssh-keygen -t rsa 
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/.ssh/id_rsa): ./yourgitkey
Enter passphrase (empty for no passphrase):  
Enter same passphrase again: 
Your identification has been saved in ./yourgitkey
Your public key has been saved in ./yourgitkey.pub

将 ./yourgitkey.pub 的内容复制到 GitHub https://github.com/settings/keys

添加新的 SSH 密钥并输入 ./yourgitkey.pub

为了避免权限错误: 让您的私钥许可

chmod 400 ./yourgitkey 

输入以下内容:

$ ssh -T git@github.com

您可能会看到如下警告:

> The authenticity of host 'github.com (IP ADDRESS)' can't be established.
> RSA key fingerprint is SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8.
> Are you sure you want to continue connecting (yes/no)?
Verify that the fingerprint in the message you see matches GitHub's RSA public key fingerprint.

如果是,则输入yes:

你好用户名!您已成功通过身份验证,但 GitHub 没有 提供外壳访问。

你现在准备好了!!!

【讨论】:

嗨@Biswajit Mohanty!我没有'ssh -T git@github.com'...我只是这样做了,我得到了正确的答案'...您已成功验证,但 GitHub 不提供 shell 访问权限......'。但是拉代码仍然说'权限被拒绝(公钥)。致命:无法从远程存储库中读取'。存储库 .git/config 文件已定义 'sshCommand = "ssh -i ~/.ssh/id_rsa.pub"' 。继续挖掘 IT 的东西! 'ssh -T git@github.com'... 只是为了查看连接是否适用于使用默认密钥的 GitHub,它是可选的:D 正如你所说,你已经获得访问权限而无需提供任何ssh -T git@github.com 中提到的密钥。所以不需要SSH命令,'sshcommand'应该包含私钥,我可以看到你的问题中提到了公钥无论如何,你已经得到了答案。干杯队友!!!

以上是关于通过 ssh 将 EC2 连接到 Git的主要内容,如果未能解决你的问题,请参考以下文章

使用 SSH 连接到AWS EC2 Linux 实例(Windows可用SSH)

允许用户使用密钥对通过 SSH 连接到 EC2 Linux 实例

在 Mac OSx 上通过 SSH 连接到 EC2 时出现权限错误

通过 EC2 连接到 AWS MySQL?

AWS EC2:ssh:连接到主机 10.0.0.206 端口 22:连接超时

通过 SSH 连接到 EBS 创建的 EC2 实例