我有一个设置,我可以从本地机器 ssh 到我的远程服务器(即 Google Compute 实例)。我以前能够从我的偏僻的实例而无需向我的添加任何键偏僻的例如,也没有向我的在线存储库添加任何新密钥(只是来自我的当地的机器)。我相信远程实例正在使用我的当地的机器来验证我的 Git 推送和拉取。
但是,当我在本地机器上重新安装操作系统时,系统崩溃了。现在,当我尝试从远程实例连接 Github 服务器时,我得到以下信息:
无法克隆:
[lucas@ecoinstance]~/node$ git clone [email protected]:lucasExample/test.git test
Cloning into 'test'...
Permission denied (publickey).
fatal: The remote end hung up unexpectedly
无法推送:
[lucas@ecoinstance]~/node/nodetest1$ git status
# On branch master
# Your branch is ahead of 'origin/master' by 1 commit.
#
nothing to commit (working directory clean)
[lucas@ecoinstance]~/node/nodetest1$ git push
Permission denied (publickey).
fatal: The remote end hung up unexpectedly
附加信息:
[lucas@ecoinstance]~/node/nodetest1$ ssh-add -l
Could not open a connection to your authentication agent.
[lucas@ecoinstance]~/.ssh$ ls
authorized_keys known_hosts
如您所见,我的远程实例上没有密钥。我从来没有在遥控器上放过密钥,在我重新安装本地操作系统之前,它可以正常推拉。
我仍然可以在本地机器上克隆、推送和拉取,只是我的远程机器无法获得身份验证。我的本地操作系统是 Ubuntu 14.04,我的远程操作系统是 Debian Wheezy。
任何建议都很好。我不确定如何搜索这个可以通过本地机器从远程实例进行身份验证的概念,因此任何参考资料也非常感谢。
答案1
听起来你可能在重新加载本地计算机之前设置了 ssh 密钥转发。这将允许远程计算机使用你本地拥有的密钥。
在本地机器上编辑 ~/.ssh/config 并添加
Host remoteHost
ForwardAgent yes
Github 上有更详细的教程如果你遇到任何问题