SSH代理转发无法正常工作

时间:2014-02-03 07:46:09

标签: github ssh capistrano3

我很难配置Capistrano 3.1来部署在Github上托管的应用程序。

我正在关注Capistrano Documentation并且我已成功完成第一步(从工作站到服务器的SSH密钥)和第二步(从我们的服务器到存储库主机)我能够成功运行{ {1}}:

ssh -A deploy@one-of-my-servers.com 'git ls-remote git@github.com:my_user/my_repo.git'

然而,18f38afz261df35d462f7f4e2ca847d22f148a06 HEAD 18f38afz261df35d462f7f4e2ca847d22f148a06 refs/heads/master 失败了:

ssh deploy@one-of-my-servers.com 'git ls-remote git@github.com:my_user/my_repo.git'

Capistrano docs建议

  

如果收到错误“主机密钥验证失败”。登录到您的服务器并以部署用户ssh git@github.com命令运行,将github.com添加到已知主机列表中。

所以,我试过了,但我得到了

Permission denied (publickey).

我基本上无法成功访问Github仓库。

SSH文档声明:

ssh git@github.com
Warning: Permanently added the RSA host key for IP address '192.30.252.131' to the list of known hosts.
Permission denied (publickey).

如何在配置文件中基于每个主机指定?

我的本​​地机器运行Mac OSX Mavericks。 VPS运行Ubuntu 12.04

感谢。

5 个答案:

答案 0 :(得分:69)

您是否已将ssh密钥添加到代理商标识列表中?

您可以查看ssh-add -L,您应该看到用于连接github的密钥:

$ ssh-add -L
ssh-rsa AAAAB3N.....0VmSiRvTzBrbU0ww== /Users/youruser/.ssh/id_rsa

如果您没有看到用于github的ssh密钥或类似

的消息
  

代理人没有身份。

然后你应该用你的密钥添加:

ssh-add ~/.ssh/id_rsa

(替换为用于github的密钥的路径)

有关详细信息,请参阅ssh-add doc

答案 1 :(得分:23)

将以下行添加到本地计算机上的.ssh / config文件

  Host Server_Address
     ForwardAgent yes

使用

检查您的本地密钥是否列在ssh-add列表中
ssh-add -L

如果没有为SSH代理添加密钥

ssh-add -K

连接到远程服务器

ssh -v username@Server_Address

通过运行以下命令检查SSH代理转发是否已启用。它应该列出一个套接字文件

echo "$SSH_AUTH_SOCK"

对GitHub运行连接测试

ssh -T git@github.com

针对目标git存储库运行ls远程测试

git ls-remote --heads git@github.com:account/repo.git

最后退出并从本地计算机执行以下操作

cap production git:check

答案 2 :(得分:7)

将以下内容添加到〜/ .ssh / config

Host one-of-my-servers.com
    ForwardAgent yes

答案 3 :(得分:0)

如果添加ssh密钥然后退出终端,则下次打开终端时必须重新添加它。

答案 4 :(得分:0)

另一个原因:如果目标主机的指纹与您的~/.ssh/known_hosts不匹配,则SSH自动禁用代理转发。

解决方案是:

$ ssh -A -o UserKnownHostsFile=/dev/null  my-target-host