本指南很好地解释了 ssh-agent 如何在多个系统中工作。我想按照最后一组图表中的方式设置转发,但我无法找到这样做所需的步骤。
为了一些我网络上的机器,我可以从 A 到 B,再从 B 到 C,而无需输入证书密码。但是,其他机器会给出“无法打开到您的身份验证代理的连接”(有时!),然后不会转发我的身份验证信息。从其中一台机器 SSH 到网络上的另一台机器时,会再次提示我输入私钥密码。
我没有建造这些机器,但我可以管理其中的一些。我不确定能用的机器和不能用的机器之间有什么区别——可能是防火墙问题、ssh/ssh-agent/sshd 配置,等等,而且我没有看到任何针对转发在网上流传。我只是想知道从哪里开始追查这个问题。
答案1
ForwardAgent
客户端 (中的选项~/.ssh/config
) 和服务器 (AllowAgentForwarding
中的选项)必须允许 SSH 代理转发sshd_config
。您的计算机可能对其中一个或两个选项具有不同的默认设置。
如果您要前往 A->B->C,则在 B->C 步骤上无需转发(当然,除非您要前往 C->D)。
当您登录到 B 时,请检查环境变量SSH_AUTH_SOCK
是否已定义。其值是如何ssh
知道如何联系代理。
没有充分的理由禁止服务器中的代理转发,因为代理转发会使客户端容易受到服务器的攻击,而不是相反,并且你原则上可以手动设置代理转发(虽然没有太大意义,因为设置的难度会破坏代理转发的便利性)。
答案2
虽然您已经从上面的@Gilles 获得了正确的答案,但我想指出的是,这AllowAgentForwarding
仅在 OpenSSH 5.1 及更高版本中受支持。
从我在 RHEL 4u5 机器上看到的情况来看,5.1 之前的 OpenSSH 服务器默认允许代理转发。因此,如果您的服务器早于 5.1 并且代理转发不起作用,则问题可能出在 ssh 客户端上。由于转发似乎在某些机器上起作用,因此似乎/etc/ssh/ssh_config
设置正常。检查~/.ssh/config
是否有任何例外来禁用受影响机器的代理转发。