2013-11-27 152 views
1

我有一个托管Atlassian Stash实例的git存储库。然后我有三台机器:奥林巴斯,宙斯和赫拉,我部署了最新版本的软件系统。为了实现这一功能,我希望从奥林巴斯远程部署到其他机器上,我尝试使用sshgit pull,但是这种方式与Permission denied (publickey).不符。我基本上做的,并得到:使用ssh远程Git拉取权限被拒绝(publickey)?

[email protected]:~$ ssh [email protected] 'cd ~/my/project/release/deploy/location/; git pull' 
Permission denied (publickey). 
fatal: The remote end hung up unexpectedly 

我有以下几点:

  • 每台机器都有(还没有来得及安装LDAP等),不同的用户AZG所以我有院方@奥林巴斯,院方@zeus和azg @ hera。对于每个用户,我都生成了ssh id_rsa密钥对。
  • 我已填充每个AZG用户authorized_keys与其他
  • 藏匿AZG用户配置有用于每个用户AZG所有id_rsa.pub的副本的对应id_rsa.pub(AZG @奥林巴斯,AZG @宙斯,AZG @hera),所以我可以通过SSH从每台机器克隆,拉或推,而不必每次都输入密码。因此,我可以做没有问题:

    [email protected]:~/code$ git clone ssh://[email protected]: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'的密码,例如

[email protected]:~$ ssh [email protected] 
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 
[email protected]:~$ cdc 
[email protected]:~/code$ git clone ssh://[email protected]: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. 

回答

2

这听起来像是你在Zeus上用密码创建了RSA密钥对。 (这与帐户密码不同;它是解密密钥文件本身的密码)。考虑重新生成密钥对,并确保在ssh-keygen要求密码时不要输入任何内容。另外,虽然一些安全专家可能会对这种做法感到不满,但我建议只创建一个密钥对,并在所有机器上使用它。然后,authorized_keys文件只需要一行,并且在所有主机上都可以相同。

::编辑::作为OP在评论中指出的,如果您的操作系统备马你ssh-agent(这我会建议禁用)坚持,你需要为了得到ssh-agent停止对所有的机器上运行ssh-add发出警告。

+0

我是否正确地得到我应该只生成一个无密码ssh密钥对并将其用于所有机器?主机名是否在pub文件中扮演任何角色,即azg @ zeus? –

+1

是的,这就是我会做的。不,在公共密钥文件中放在行尾的'user @ host'只是一个注释。这完全不相关。我通常用'dg99 @ global'代替我的,但这仍然没有意义,但是我个人会提醒我在很多地方使用这个密钥对。 – dg99

+0

Allrighty它的作品谢谢!只是为了完成下面的答案,因为我最终会错误'代理承认没有使用密钥签名.'并且这是在所有机器上运行'ssh-add'修复的!请更新答案,我会接受。 –

相关问题