通过 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 时出现权限错误