![由于时间不同,autossh 无法重新创建隧道](https://linux22.com/image/612678/%E7%94%B1%E4%BA%8E%E6%97%B6%E9%97%B4%E4%B8%8D%E5%90%8C%EF%BC%8Cautossh%20%E6%97%A0%E6%B3%95%E9%87%8D%E6%96%B0%E5%88%9B%E5%BB%BA%E9%9A%A7%E9%81%93.png)
如果网络出现短时间中断(最长 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,就会发生这种情况。
答案1
您可以设置 ssh 选项前进失败时退出如果无法设置所有请求的动态、隧道、本地和远程端口转发,则设置为 yes,以使 ssh 终止连接。
Autossh 将重新创建新的 ssh 连接,直到转发成功。