首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >试图在远程计算机上使用Capistrano但ssh-agent进行部署并不能保持身份加载,因此git命令失败;为什么?

试图在远程计算机上使用Capistrano但ssh-agent进行部署并不能保持身份加载,因此git命令失败;为什么?
EN

Stack Overflow用户
提问于 2013-09-26 11:44:12
回答 1查看 2.4K关注 0票数 1

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

我下命令的时候一切都很顺利

代码语言:javascript
复制
me@localhost $ ssh deploy@one-of-my-servers.com 'hostname; uptime'

但是..。当我遇到这样的命令

代码语言:javascript
复制
me@localhost $ ssh -A deploy@one-of-my-servers.com 'git ls-remote git@bitbucket.org:team/application.git

我有一个可怕的

代码语言:javascript
复制
Permission denied (publickey).

我决定将ssh直接作为部署用户发送到服务器,然后从那里尝试我的命令,但随后有人要求我提供密码:

代码语言:javascript
复制
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-代理应该有我的空闲负载,所有的都应该是部署人员和比特扣。我决定检查ssh-agent是否通过运行

代码语言:javascript
复制
ssh-add -l

但我得到了

代码语言:javascript
复制
Could not open a connection to your authentication agent.

什么?好的,然后启动ssh代理,并通过这样做确保我的身份被加载。

代码语言:javascript
复制
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上进行远程列表了。

代码语言:javascript
复制
deployer@server:~$ git ls-remote git@bitbucket.org:team/application.git
f25db5c4691531c8ad27882c74d9668de66f795f    HEAD
97a68f4f6cbffd0c320b37891ffdda57931146f4    refs/heads/deployer
f25db5c4691531c8ad27882c74d9668de66f795f    refs/heads/master
deployer@server:~$ 

现在我很高兴,退出了服务器,在本地机器上再试一次。

代码语言:javascript
复制
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

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-09-27 06:48:50

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

当您为了git目的远程登录时,使用保存的信息通过bashrc或其他启动脚本设置SSH_AUTH_SOCK和SSH_AGENT_PID。你不想要一个新的特工。你需要指向已经有钥匙的那个。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19027327

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档