1

我浏览了一些关于如何准备使用 Capistrano 的文档,其中包括来自 Capistrano 网站的“身份验证和授权”。

当我执行此命令时,一切都变得花花公子

me@localhost $ ssh deploy@one-of-my-servers.com 'hostname; uptime'

但是..当我遇到这个命令时

me@localhost $ ssh -A deploy@one-of-my-servers.com 'git ls-remote git@bitbucket.org:team/application.git

我有一个可怕的

Permission denied (publickey).

我决定以部署用户的身份直接 ssh 到服务器并从那里尝试我的命令,但随后我被要求输入密码:

me@localhost:~$ ssh deployer@server.com
... bunch of logon information ...

deployer@server:~$ git ls-remote git@bitbucket.org:team/application.git
Enter passphrase for key '/home/deployer/.ssh/id_rsa':

我输入了密码并得到了 bitbucket 的响应。现在我不明白为什么要我输入密码,因为 ssh-agent 应该加载我的身份,并且部署程序和 bitbuckt 都应该很好。我决定检查 ssh-agent 是否通过运行加载了我的身份

ssh-add -l

但后来我得到了

Could not open a connection to your authentication agent.

什么?好的,然后我启动了 ssh-agent 并确保通过这样做加载了我的身份

deployer@server:~$ eval "$(ssh-agent)"
Agent pid 30113
deployer@server:~$ ssh-add -l
The agent has no identities.
deployer@server:~$ ssh-add
Enter passphrase for /home/deployer/.ssh/id_rsa: 
Identity added: /home/deployer/.ssh/id_rsa (/home/deployer/.ssh/id_rsa)
deployer@server:~$ ssh-add -l
2048 6c:87:f9:e1:71:75:0d:1c:cf:8d:d8:a8:06:fc:70:e7 /home/deployer/.ssh/id_rsa (RSA)

现在我可以很好地从 bitbucket 进行远程列表,而无需输入我的密码

deployer@server:~$ git ls-remote git@bitbucket.org:team/application.git
f25db5c4691531c8ad27882c74d9668de66f795f    HEAD
97a68f4f6cbffd0c320b37891ffdda57931146f4    refs/heads/deployer
f25db5c4691531c8ad27882c74d9668de66f795f    refs/heads/master
deployer@server:~$ 

现在我很高兴并退出服务器并从本地计算机再次尝试

deployer@server:~$ exit
logout
Connection to server.com closed.
me@localhost:~$ ssh deployer@server.com 'git ls-remote git@bitbucket.org:team/application.git'
Permission denied (publickey).
fatal: The remote end hung up unexpectedly

???这就是我的问题......现在你能看到我哪里出错了吗?

4

1 回答 1

0

您可以登录一次以启动 ssh-agent 并将您的密钥 (ssh-add) 加载到代理中。将 ssh-agent 的输出保存在某个文件中。

当您出于 git 目的远程登录时,通过 bashrc 或使用保存的信息的其他启动脚本设置 SSH_AUTH_SOCK 和 SSH_AGENT_PID。您不需要新的 ssh 代理。您需要指向已经拥有密钥的同一个。

于 2013-09-27T06:48:50.780 回答