我有一台主机 $HOST,我只能通过ssh
访问主机 $BASTION 来访问它,然后通过基于主机的身份验证,连接到ssh $HOST
。$HOST 不接受通过公钥认证等方式进行访问。
ProxyCommand
我需要进行什么配置才能使ssh $HOST
我的本地机器透明地连接到 $HOST?
我在本地机器上使用 OpenSSH 6.2p2,在 $BASTION 和 $HOST 上使用 OpenSSH 5.9p1。
答案1
您可以在“stdio forward”模式下使用 ssh。这会导致 ssh 连接到指定主机并请求 sshd 打开到另一台主机的转发连接。ssh 客户端会将此转发连接连接到 stdin/out,这使得它非常适合用作 ProxyCommand。
ssh_config 代码片段示例:
Host behind-bastion
ProxyCommand ssh -W %h:%p bastion
请注意,基于主机的身份验证在将传入连接地址的 DNS 名称与 /etc/ssh/known_hosts 中与公钥关联的名称进行匹配时可能非常挑剔。如果您在这里遇到问题,您可能需要在 $HOST 的 sshd_config 中设置 HostbasedUsesNameFromPacketOnly=yes。