使用ssh的远程Git pull会导致权限被拒绝(publickey)?

时间:2013-11-27 16:03:31

标签: git ubuntu ssh bitbucket-server

我在Atlassian Stash的托管实例中有一个git存储库。然后我有三台机器:奥林巴斯,宙斯和赫拉,我部署了最新版本的软件系统。为了自动执行此操作,我想从奥林巴斯远程部署到我尝试使用sshgit pull的其他计算机上,但这与Permission denied (publickey).失败。我基本上做到了:

azg@olympus:~$ ssh azg@zeus 'cd ~/my/project/release/deploy/location/; git pull'
Permission denied (publickey).
fatal: The remote end hung up unexpectedly

我有以下内容:

  • 每台机器都有不同的azg用户(没有时间安装LDAP等)所以我有azg @ olympus,azg @ zeus和azg @hera。对于每个用户,我生成了ssh id_rsa密钥对。
  • 我已使用其他人的相应id_rsa.pub填充每个azg用户authorized_keys
  • Stash azg用户配置了每个azg用户(azg @ olympus,azg @ zeus,azg @ hera)的所有id_rsa.pub的副本,因此我可以通过ssh从每台机器克隆,拉取或推送每次都要输入密码。因此我不会遇到任何问题:

    azg@olympus:~/code$ git clone ssh://azg@olympus:7999/pm/pm.git
    Cloning into 'pm'...        
    remote: Counting objects: 555, done.
    remote: Compressing objects: 100% (271/271), done.
    remote: Total 555 (delta 203), reused 555 (delta 203)
    Receiving objects: 100% (555/555), 9.54 MiB, done.
    Resolving deltas: 100% (203/203), done.
    

我可以分别从每台机器上做同样的事情。但是,如果我首先远程登录,我不能这样做,即每次都要求我输入密钥'/home/azg/.ssh/id_rsa'的密码短语,例如

azg@olympus:~$ ssh azg@zeus
Welcome to Ubuntu 12.04.3 LTS (GNU/Linux 3.5.0-43-generic x86_64)

 * Documentation:  https://help.ubuntu.com/

Last login: Wed Nov 27 17:01:33 2013 from olympus
azg@zeus:~$ cdc
azg@zeus:~/code$ git clone ssh://azg@olympus:7999/pm/pm.git
Cloning into 'pm'...
Enter passphrase for key '/home/azg/.ssh/id_rsa':  <<<<<<<<<<< WHY???
remote: Counting objects: 555, done.
remote: Compressing objects: 100% (271/271), done.
remote: Total 555 (delta 203), reused 555 (delta 203)
Receiving objects: 100% (555/555), 9.54 MiB | 145 KiB/s, done.
Resolving deltas: 100% (203/203), done.

1 个答案:

答案 0 :(得分:2)

听起来你在Zeus上用密码创建了RSA密钥对。 (这与帐户密码不同;它是解密密钥文件本身的密码。)考虑重新生成密钥对,并确保在ssh-keygen要求密码短语时不输入任何内容。

此外,虽然一些安全专家可能不赞成这种做法,但我建议只创建一个密钥对并在所有机器上使用它。然后authorized_keys文件只需要一行,并且在所有主机上都可以是相同的。

:: edit ::正如OP在评论中指出的那样,如果你的操作系统坚持用ssh-agent(我建议禁用),你需要在所有机器上运行ssh-add为了让ssh-agent停止发出警告。