繁体   English   中英

当隧道被拆除并重新启动时,反向ssh隧道无法绑定到端口

[英]Reverse ssh tunnel fails to bind to port when tunnel is torn down and restarted

我有一个主机在启动时启动反向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命令执行类似检查,如果远程主机可以绑定该端口,如果没有,请在几秒钟后重试?

我相信我遇到了和原版海报一样的问题。 我似乎在这个问题的接受答案的最后找到了解决方案:

如果客户端在服务器上的连接终止之前重新连接,则最终可能会出现新的ssh连接处于活动状态但没有端口转发的情况。 为了避免这种情况,您需要在客户端使用ExitOnForwardFailure关键字。

因此,我在客户端的/etc/ssh/ssh_config文件中添加了以下行:

ExitOnForwardFailure yes

根据ssh手册页 ,此选项将导致“在将自己置于后台之前,以-f [to]等待所有远程端口转发成功建立的客户端”。

这似乎导致ssh在尝试杀死ssh隧道后立即失败。 因此,该选项使得能够重复尝试直到隧道被正确地重新建立。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM