我的主机在启动时会自动启动一个反向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 客户端(应该自动完成,但可能没有发生)。 - Misko