当 JumpHost 重启时我可以自动关闭 ssh 连接吗?

当 JumpHost 重启时我可以自动关闭 ssh 连接吗?

我使用从家到工作的反向 ssh 隧道,因此我可以在工作时间时不时地检查我的家用电脑,而无需打开我的家用路由器来接收传入连接。

两台电脑(家用和工作用)都运行 Linux(但发行版不同)。

我正在家用电脑上循环运行 ssh 命令(我只需要用于 VNC 访问的连接):

while [ true ]
do
  date
  ssh -T -N -R 15900:localhost:5900 me@work-PC
  sleep 5m
done

在工作电脑上,我将 VNC 查看器连接到 localhost:15900。

这是我家用电脑上的 .ssh/config:

host work-PC
  ProxyJump employers-Gateway
  HostName work-PC
  User me

host employers-Gateway
  HostName web.company.com
  User me

只要 ProxyJump(employers-Gateway)没有重新启动,它就能正常工作。当我重新启动工作电脑时,ssh 连接结束(如预期的那样),5 分钟后会打开一个新连接。但是,当雇主网关重新启动时,连接就会停滞。在这些情况下,我在终端上收到以下消息:

Warning: remote port forwarding failed for listen port 15900

当 ProxyJump 不可用时,我能做些什么来让 ssh 连接也关闭?

编辑:

今天,他们重启了网关。不幸的是,戴大卫的解决方案不起作用。这是我在运行隧道循环的终端中看到的内容:

Timeout, server web.company.com not responding.
client_loop: send disconnect: Broken pipe
ssh: connect to host employers-Gateway port 22: Connection timed out
kex_exchange_identification: Connection closed by remote host
Warning: remote port forwarding failed for listen port 15900

会不会是工作电脑仍然认为它已经打开了旧连接,因此拒绝再次打开隧道(从它的角度来看)?

所以也许我看错了方向。也许是最终目标(工作电脑)不知道隧道塌陷,而不是鼻祖(家用电脑)。

对此有什么想法吗?

答案1

您可以尝试在配置文件中添加以下参数:

host work-PC
  ProxyJump employers-Gateway
  HostName work-PC
  User me
  ServerAliveInterval 15
  ServerAliveCountMax 2

ServerAliveInterval 15告诉 ssh 每 15 秒向服务器请求一次响应。
ServerAliveCountMax 2如果 2 次没有收到服务器的响应,则告诉 ssh 退出。

相关内容