我有一个设置,我可以从我的本地机器 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。
任何建议都会很棒。我不知道如何搜索这个概念,我可以通过我的本地机器从远程实例进行身份验证,因此也欢迎任何参考。
听起来您可能在重新加载本地计算机之前设置了 ssh 密钥转发设置。这将允许远程机器使用您在本地拥有的密钥。
在本地机器上编辑 ~/.ssh/config 并添加
如果您遇到任何问题,Github 有更详细的教程