【发布时间】:2017-02-07 00:02:46
【问题描述】:
我有一台主机在启动时启动反向 ssh 隧道,如下所示:
ssh -N -R 2222:localhost:22 root@10.1.2.6
效果很好,并且形成了反向隧道。但是每当我重新启动主机时,构建隧道的远程服务器都会这样说:
Sep 28 13:13:59 kali sshd[4547]: error: bind: Address already in use
Sep 28 13:13:59 kali sshd[4547]: error: channel_setup_fwd_listener_tcpip: cannot listen to port: 2222
为了让我解决这个问题,我必须等待几分钟让旧的 ssh 隧道超时,然后找到新的 ssh 连接并终止它,然后当我重建 ssh 隧道时它工作正常。
是否有ssh 命令或autossh 命令可以检查远程主机是否可以绑定该端口,如果不能,请在几秒钟后重试?
【问题讨论】:
-
您可以执行
while /bin/true; do ssh -N ...; done- 这将在隧道失败时重新启动 ssh 进程。每当您重新启动服务器时 - 这意味着优雅的重置还是硬重置?如果正常,请尝试在重启前使用TERM信号终止 ssh 客户端(应该会自动完成,但可能不会发生) -
ssh 连接已建立,但无法打开远程服务器上的 2222 端口,因为该端口正在使用中。如果无法绑定到该端口,我希望隧道无法建立。我正在优雅地重启。