SSH ForwardAgent多跳


15

在过去的2个小时里,我一直在寻找解决以下问题的方法,但是没有运气。

发展:

我正在使用公共密钥身份验证连接到我的服务器。我使用ssh-agent转发来不必管理公用/专用密钥。

假设我有服务器A, B and C

如果我从进行连接,则效果很好LOCAL ---> A ---> B

如果我这样做也很好LOCAL ---> A ---> C

现在,如果我尝试这样做LOCAL ---> A ---> B ---> C,则SSH无法从进行连接B to C

值得注意的是:我以流动性连接到服务器A,而我以root身份连接到服务器B。由于流动性而连接到服务器B可以解决此问题,但这对我来说不是一个选择。

根据用户的建议,我ssh -A每次都要确保启用了代理转发。

我发现了一个类似的问题,但在这里没有答案:是否可以通过多跳链接ssh-agent转发?

根据这里的@Zoredache:https://serverfault.com/a/561576/45671,我只需要在每个中间系统上调整客户端配置即可。我相信我做到了。


考虑使用ProxyCommand跳频(如解释在这里),而不是转发的SSH代理。对于您的方法,您必须信任链中的所有计算机,因为它们可以(ab)使用您的私钥。我也很喜欢ProxyCommand接近好了很多,因为已知主机检查本地完成的,而且,你可以设置链的SSH配置,所以你可以使用一个命令来连接到C.
gertvdijk

不幸的是,我不能使用proxyCommand。尽管有安全方面的考虑,但我确实需要使用forwardAgent。
流动资金

我可以问@liquidity为什么不使用proxyCommand?我有同样的问题,据我了解proxyCommand更安全。所以我在考虑使用哪个
grep

Answers:


13

要使代理转发通过多个跃点工作,您只需要调整每个中间系统上的客户端配置,即可进行代理转发。

就像确保您/etc/ssh/ssh_config已配置了它一样简单。但是,如果您具有每个客户端的配置,则~/.ssh/config可能还需要调整这些设置。

Host *
    ForwardAgent yes

如果仅添加-v选项,则可以查看是否发生了代理转发或是否有错误。

$ ssh -v issc@server1
OpenSSH_5.9p1 Debian-5ubuntu1.1, OpenSSL 1.0.1 14 Mar 2012
debug1: Reading configuration data /home/zoredache/.ssh/config
...
debug1: Requesting authentication agent forwarding.
debug1: Sending environment.
Linux server1 3.11-0.bpo.2-amd64 #1 SMP Debian 3.11.8-1~bpo70+1 (2013-11-21) x86_64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Sun Dec 15 20:39:44 2013 from 10.2.4.243
issc@server1:~$

还要验证您是否设置了有效的环境变量。

issc@server1:~$ export | grep SSH_AUTH
declare -x SSH_AUTH_SOCK="/tmp/ssh-7VejOmKtNv/agent.57943"

4
值得一提的是ssh的-A标志是ssh_config或〜.ssh / config选项的一种快速而肮脏的替代方法。-A [e]启用身份验证代理连接的转发。
dmourati 2013年

1
在每个步骤中,您可以使用ssh-add -l列出ssh 认为可以通过代理获取的密钥。确保在每个连接上转发它!
MikeyB 2013年

谢谢!还要注意,如果一切都正确完成,则不必在最后一台服务器上手动启动ssh-agent。如果您Requesting authentication agent forwarding.在调试输出中看到该行,它将自动启动。如果您尝试通过.bash_profilessh-agent启动,请从那里删除它,否则您的代理将重新启动且没有任何身份。
2upmedia
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.