我有一个托管Atlassian Stash实例的git存储库。然后我有三台机器:奥林巴斯,宙斯和赫拉,我部署了最新版本的软件系统。为了实现这一功能,我希望从奥林巴斯远程部署到其他机器上,我尝试使用ssh
和git 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.
我是否正确地得到我应该只生成一个无密码ssh密钥对并将其用于所有机器?主机名是否在pub文件中扮演任何角色,即azg @ zeus? –
是的,这就是我会做的。不,在公共密钥文件中放在行尾的'user @ host'只是一个注释。这完全不相关。我通常用'dg99 @ global'代替我的,但这仍然没有意义,但是我个人会提醒我在很多地方使用这个密钥对。 – dg99
Allrighty它的作品谢谢!只是为了完成下面的答案,因为我最终会错误'代理承认没有使用密钥签名.'并且这是在所有机器上运行'ssh-add'修复的!请更新答案,我会接受。 –