我正在尝试使用 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 密钥转发在此特定场景中不起作用。
在我的 ~.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 个主机开始,有时密钥不会被转发,我如何升级我的配置来防止这种情况发生。
答案1
我正在尝试使用 pssh 结合跳转主机和 ssh-agent 密钥转发来连接到多个主机。
对于使用的连接,ProxyCommand
您不需要任何ssh-agent
转发。所有身份验证都直接从您的计算机完成。
ssh_config
说的手册页
对于每个参数,将使用第一个获得的值。
因此,Host tld-jump-host
阻止应该在Host *.tld.foo
阻止之前,特别是当跳转框与其后面的主机具有相同的 tld 时。
如果您要连接到此跳转盒后面的许多主机,则可能会触发连接限制,并且连接将被随机拒绝。您可以尝试通过增加跳转盒服务器中的连接速率限制(MaxStartups
中的选项)来避免这种情况,或者通过创建目录并将以下内容添加到中的 jumbox 块来sshd_config
多路复用到跳转盒的连接:~/.ssh/cm/
ssh_config
ControlMaster auto
ControlPath ~/.ssh/cm/%C
ControlPersist 5m