如果出现短暂的网络中断(最多 60 秒),我会遇到 autossh 问题。由于我的 ISP 在早上断开网络,这种情况每天都会发生。即使使用 autossh,ssh 隧道仍会中断,直到手动重新启动。如果我用更长的停机时间测试它,autossh 重新建立隧道就好了。
当使用 "AUTOSSH_DEBUG=1" 启动 autossh 时,在短暂断开连接期间会显示以下内容:
Warning: remote port forwarding failed for listen port
同时查看 ssh 服务器时,我通过“netstat -pln”看到旧端口在那里保留了大约 60 秒,直到它最终消失。如果客户端在此期间尝试重新连接,则会失败并显示上述消息,它不会重新创建隧道,也不会重试。当它在服务器上的端口消失后重新连接时,ssh 成功地重新创建了隧道。
有没有办法延迟 autossh 客户端重新连接?如果失败,有没有办法重试重新连接(我猜目前没有重试,因为它仅被归类为警告)?有没有办法缩短 sshd 删除剩余端口的时间?
我的环境是客户端的 Debian Squeeze 和服务器上的 Wheezy。
编辑:我忘了提到,如果我使用没有管理端口“-M 0”或带有回显端口“-M 2000:7”或带有完整配对管理循环“-M 2000”的 autossh,就会发生这种情况。
小智 9
如果无法设置所有请求的动态、隧道、本地和远程端口转发,您可以将 ssh 选项ExitOnForwardFailure设置为 yes 以使 ssh 终止连接。
Autossh 将重新创建新的 ssh 连接,直到转发成功。