在我的 EC2 实例上,我创建了一个 Rails 项目 (my_app),然后创建了它的存储库:
deploy@ip-ec2: ~/my_app$ git init
(然后 git add-A,然后 git commit -m "initialized",一切就OK了)
还在该服务器中将我本地计算机的公钥:id_rsa.pub 添加到服务器端的文件authorized_keys 中。
现在在本地计算机中,我想克隆 ec2 中创建的存储库:
local@machine:~/repos$ sudo git clone ssh://<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="d2b6b7a2bebdab92b7b1e0ffe2e3ffe2e2e5ffe7e1ffe3e1e6fcaaaaffb7b3a1a6ffe3fcb1bdbfa2a7a6b7fcb3bfb3a8bdbcb3a5a1fcb1bdbf" rel="noreferrer noopener nofollow">[email protected]</a>/~/my_app
本地机器输出:
Clonar en «my_app»...
Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
我缺少什么?我应该更改服务器项目中的某些权限吗?
最佳答案
当您通过 SSH 连接到 EC2 节点时,您是否使用 ssh -i /path/to/key
?要在 EC2 节点上使用私钥,您需要设置 ssh-agent 并使用 -A
通过 SSH 连接转发它。开关。
如果您运行:ssh-add -l
,它应该显示代理已知的所有 key 。
$ ssh-add -l
4096 SHA256:xxxxxxxxxxxxxx /home/matt/.ssh/id_rsa (RSA)
如果您从 EC2 节点运行此命令而不转发代理,您将看到找不到代理,或者没有已知 key 。
在您的第一台主机上,使用上述命令检查代理是否正在运行。
如果它正在运行并且有您的 key ,那么您所需要做的就是前进。如果您没有运行代理,则只需运行 ssh-agent
即可启动一个新实例。 ,但是这将打印一些您需要运行的命令:
$ ssh-agent
SSH_AUTH_SOCK=/tmp/ssh-jZBbs4yRG03w/agent.6708; export SSH_AUTH_SOCK;
SSH_AGENT_PID=16496; export SSH_AGENT_PID;
echo Agent pid 16496;
处理此问题的最简单方法是使用一个命令同时启动代理和评估:
$ eval `ssh-agent`
Agent pid 16496
现在添加您的 key (如果它们是默认路径/名称):
ssh-add
or
ssh-add /path/to/key
现在您可以将代理转发到您的 EC2 节点。
关于使用 ssh 从 AWS EC2 中的存储库进行 Git 克隆?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53452022/