当特定 ssh 配置连接失败时运行命令

当特定 ssh 配置连接失败时运行命令

这是一个有点长远的目标,但是,如果连接失败,则获取 ssh 的最佳方式是什么,运行命令,然后重试连接。

为了分享我的用例,我通过 ssh 隧道访问防火墙后面的计算机,这意味着我的 ~/.ssh/config 中的内容为:

Host tunnel
    HostName 192.168.1.27

Host target
    HostName localhost
    Port 2003

为了使其ssh target工作,我首先需要ssh -N -L 2003:localhost:22 tunnel在后台执行。我决定使用一个命令来执行此操作:screen -d -m ssh -N -L 2003:localhost:22 tunnel

当失败时运行该命令并不太烦人ssh target,但如果 ssh 可以在连接失败时以某种方式自动运行它,那就太好了。

答案1

比隧道更好的解决方案是使用 ProxyCommand,如下所述:通过中间机转发 SSH 流量

为了符合您的用例:

Host tunnel
  HostName 192.168.1.27
Host target
  HostName localhost
  Port 2003
  ProxyCommand ssh tunnel -W %h:%p

或者

  ProxyCommand ssh tunnel nc %h %p

然后,你就可以ssh target自己做所有事了。

相关内容