我正在尝试为我正在处理的webapp设置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)
(请注意,第二个示例中的日志有一条额外的行,表示正在请求代理转发。)
这是正常的,还是我做错了什么?提前谢谢!
答案 0 :(得分:14)
此块
Host rs
HostName <ip of my server>
ForwardAgent
User root
仅适用于您对ssh
的调用
ssh rs
在这种情况下ssh
知道应该用来代替“rs”。在你的电话中
ssh -v deploy@<server>
无论你使用什么<server>
都与“rs”不匹配(因为只有文字字符串“rs”匹配),所以该块不适用。
Host
选项的参数必须是与您在命令行中实际使用的主机名匹配的模式。
答案 1 :(得分: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&#34; $ SSH_AUTH_SOCK&#34;