我试图连接到一些主机使用pssh结合跳转主机和ssh-agent密钥转发。
不幸的是,这经常会失败,但不同的主机不能正常工作。 所以这只是下一次看起来不一样的一个例子:
~> pssh -h /tmp/hostfile -o /tmp/log -e /tmp/error/ -v uname -a [1] 13:51:18 [FAILURE] host1 Exited with error code 255 [2] 13:51:19 [SUCCESS] host2 [3] 13:51:19 [SUCCESS] host3 [4] 13:51:19 [SUCCESS] host4 [5] 13:51:19 [SUCCESS] host5 [6] 13:51:19 [SUCCESS] host6 [7] 13:51:19 [SUCCESS] host7 …. [16] 13:51:19 [SUCCESS] host16
当看得更深时,我越来越了
ssh_exchange_identification: Connection closed by remote host ssh_exchange_identification: Connection closed by remote host
在失败的主机上。 这看起来很像通过跳转主机的ssh-agent keyforwarding在这个特定的场景中不起作用。
在我的〜.ssh / config里面看起来像这样:
ForwardAgent yes Host *.tld.foo User frlan ProxyCommand ssh tld-jump-host nc %h %p Host tld-jump-host HostName myhost.example.com User frlan ProxyCommand none
通常这是工作。 现在我想知道为什么从15个主机开始,有时关键是不转发一个单桅帆船,我可以升级我的configuration,以防止这种情况发生。
我试图连接到一些主机使用pssh结合跳转主机和ssh-agent密钥转发。
对于使用ProxyCommand连接,您不需要任何ssh-agent转发。 所有的validation都是直接从你的电脑完成的。
ssh_config手册页说
对于每个参数,将使用第一个获得的值。
因此Host tld-jump-host块应该在Host *.tld.foo块之前,特别是如果跳转框与它后面的主机有相同的tld。
如果连接到此跳转框后面的许多主机,则可能触发连接限制,连接将被随机拒绝。 你可以尝试通过跳转jumpbox服务器中的连接速率限制( sshd_config MaxStartups选项)来避免它,或者通过创build目录~/.ssh/cm/并将以下内容添加到ssh_config的jumbox块来将连接复用到跳转框:
ControlMaster auto ControlPath ~/.ssh/cm/%C ControlPersist 5m