SSH忽略了我的ForwardAgent配置?

9

我正在尝试为我所开发的Web应用程序设置Capistrano,并且我在让代理转发正常工作方面遇到了麻烦。

以下是我的~/.ssh/config文件:

Host rs
Hostname <ip of my server>
  ForwardAgent yes

User root

我认为默认设置并没有覆盖任何内容,因为ForwardAgent从来没有被提及过(除了注释行)。

以下是我正常进行SSH时发生的情况:

$ ssh -v deploy@<server>
OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011
debug1: Reading configuration data /Users/ulyssecarion/.ssh/config
debug1: Reading configuration data /etc/ssh_config
debug1: /etc/ssh_config line 20: Applying options for *
debug1: /etc/ssh_config line 102: Applying options for *

-- snip --

debug1: channel 0: new [client-session]
debug1: Requesting no-more-sessions@openssh.com
debug1: Entering interactive session.
debug1: Sending environment.
debug1: Sending env LANG = en_US.UTF-8
Welcome to Ubuntu 12.04.3 LTS (GNU/Linux 3.8.0-29-generic x86_64)

如果我在SSH命令中使用了-A标志来强制启用代理转发,则可以使其正常工作:
$ ssh -Av deploy@<server>
OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011
debug1: Reading configuration data /Users/ulyssecarion/.ssh/config
debug1: Reading configuration data /etc/ssh_config
debug1: /etc/ssh_config line 20: Applying options for *
debug1: /etc/ssh_config line 102: Applying options for *

-- snip --

debug1: channel 0: new [client-session]
debug1: Requesting no-more-sessions@openssh.com
debug1: Entering interactive session.
debug1: Requesting authentication agent forwarding. # Note this additional line here
debug1: Sending environment.
debug1: Sending env LANG = en_US.UTF-8
Welcome to Ubuntu 12.04.3 LTS (GNU/Linux 3.8.0-29-generic x86_64)

(请注意,第二个示例中的日志有一行额外的指示代理转发正在被请求。)
这是正常的吗?还是我做错了什么?谢谢!

1
你在命令行中使用“rs”作为主机名吗?否则,配置块将不起作用。 - chepner
2个回答

14

这个区块

Host rs
  HostName <ip of my server>
  ForwardAgent
  User root

仅适用于您对ssh的调用看起来像

ssh rs

在这种情况下,ssh 知道应该使用 "rs" 的位置。在您的调用中

ssh -v deploy@<server>

无论你使用什么作为<server>,都不匹配"rs"(因为只有文字串"rs"才能匹配),所以这个块不适用。

Host选项的参数必须是一个能够与您在命令行上实际使用的主机名相匹配的模式。


数小时后,这个答案帮助我解决了问题。我的问题在于Host example.com ForwardAgent yes后面没有相应的别名ForwardAgent yes - Leo

1

在ServerFault上有一些关于设置ssh代理转发的很好的信息。https://superuser.com/questions/168933/extra-configuration-required-for-ssh-agent-forwarding

我想指出的一件事是,服务器上的ssh配置文件可能已经注释了ForwardAgent,但至少在我的配置文件中,它实际上列出了ssh默认值。似乎对于某些版本的openssh,您必须在服务器上设置AllowAgentForwarding选项。我发现这篇文章非常有用https://help.github.com/articles/using-ssh-agent-forwarding

检查ssh代理转发是否正在工作的方法是查看$SSH_AUTH_SOCK环境变量。

echo "$SSH_AUTH_SOCK"


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接