如果网络出现短时间中断(最长 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 连接,直到转发成功。