如何防止 autossh 偶尔卡住?

sor*_*rin 12 ssh tunnel port-forwarding autossh

我正在使用autossh构建反向 ssh 隧道,但有时隧道会停止工作,我需要终止 autossh 并重新启动它。

/etc/cron.d/autossh
@reboot autossh -f -nNT -R 3269:intranet.example.com:3269 public.example.com &
Run Code Online (Sandbox Code Playgroud)

autossh 似乎保持在一个奇怪的状态,转发端口仍然打开,但你没有得到另一方的回应。通过重新启动 autossh 解决了这个问题。

我怎样才能防止这个问题发生?

Tys*_*son 7

使用ServerAliveInterval(以秒为单位的值)使ssh 客户端每隔一段时间通过加密通道发送一个空(保持活动)数据包,以检测断开的连接:

/etc/cron.d/autossh
@reboot autossh -f -nNT -R 3269:intranet.example.com:3269 -o ServerAliveInterval=30 public.example.com &
Run Code Online (Sandbox Code Playgroud)

您可能还应该ClientAliveInterval服务器/etc/ssh/sshd_config上设置相应的设置,以使服务器也丢弃死客户端连接:

# Drop dead client connections after 10 minutes of inactivity
ClientAliveInterval 600
Run Code Online (Sandbox Code Playgroud)