如何在多个跃点上链接 ssh 命令?

如何在多个跃点上链接 ssh 命令?

是否可以将多个 ssh 连接与指定为 ssh 主机的每个连接链接在一起?

我知道可以使用该-W标志或nc进行第二跳到另一个主机名或 IP 地址(参见,例如,通过多个主机进行 ssh)。由于几个原因,我无法让它按照我想要的方式工作。首先,对于第二跳,我想使用存储在中间主机上的密钥文件,但我没有找到使用 或 来指定它的-W方法nc。其次,最终目的地有一个可变的IP地址。为了解决这个问题,我在目标上运行一个脚本,将其 IP 地址写入存储在中间主机上的文件,然后look_up_ip.sh在中间主机上运行一个脚本 ( ) 打印出该 IP 地址。在中间主机上,我有以下条目~/.ssh/config

Host destination
 HostName destination
 User dest_user
 IdentityFile ~/.ssh/destination
 PreferredAuthentications publickey
 ProxyCommand nc $(look_up_ip.sh %h) %p

这使我能够从中间连接到目的地ssh destination

我想做的是~/.ssh/config在第一台机器上放置一些内容来定义目标主机(例如hopped_destination),以便 ssh 首先连接到中间主机,然后ssh destination从那里执行操作,这样我就可以ssh hopped_destination从第一台机器执行操作并让中间~/.ssh/config处理身份文件和目标 IP 查找。我想要这个的部分原因是我最终希望能够使用 VNC 连接到目的地vncviewer -via destination localhost:0,并且我希望中间主机上的其他用户无法访问该连接(如已接受答案的部分内容所暗示的那样)对于这个问题:https://superuser.com/questions/96489/an-ssh-tunnel-via-multiple-hops)。我希望可以在第一台机器上安装ssh如下ProxyCommand内容:

Host destination
 ProxyCommand ssh -t intermediate_user@intermediate_host ssh destination

但我还没有找到允许这样的事情工作的选项。

我也欢迎任何关于如何更好地做到这一点的建议(有没有办法摆脱我nc ProxyCommand现在正在使用的?)。我可能可以编写一个脚本来更直接地执行 VNC 命令,但这可能更复杂(直接处理端口转发并确保在退出时关闭,并确保不为所有用户打开端口)。

答案1

我的 ssh 配置文件中的示例;

Host vmike2-squid-cache
  User mike
  ProxyCommand ssh -q -A -x ???.???.???.??? -W %h:22

(我唯一改变的是ip)

相关内容