关于autoSSH保持连接的两种方法

使用ssh端口转发功能进行内网穿透,但是经过的网络稍有不稳定就可能导致连接断开,所以考虑使用工具 AutoSSH,按照默认使用还需要一个监听端口,考虑到安全尽量少开端口,是否可以不用,很多文章都提到了可以用ssh自身保持连接的方法,如下面这篇:

第21篇:SSH隧道持久化配置 - 知乎

其中提到:

------------------------引用开始---------------------

autossh -M 0 -o "ServerAliveInterval 5" -o "ServerAliveCountMax 1" \
-NR 17780:192.168.22.1:5900 itdog@131.72.6.154 -p 14747

autossh的关键命令参数,显然上面命令直接使用“-M 0”直接将autossh的监听端口关闭,而直接使用ssh自带的配置选项-o "ServerAliveInterval=5" -o "ServerAliveCountMax=1",上面已经分析了这个配置选项的优势,这里不再废话。

而-M选项,AutoSSH的作者解析到 “它将通过一对监控端口来回发送数据,以便跟踪已建立的连接。” 比如发送的端口30000,那么接收数据的端口就是30001。这是AutoSSH默认监控端口机制,接收端口和发送端口大1。不妨看一下,autossh官方推荐的配置形式:

autossh -M <监听端口> -NR <公网ssh主机的监听端口>:<目的地主机IP>:<目的地主机端口> \
<用户>@<公网ssh主机ip> -p <ssh服务端口>

autossh的监听端口的缺点

首先,你必须确保指定的两个随机端口在主机中是闲置的,难免会发生指定的监控端口被占用的问题。

其次,当目的地主机人为中断autossh,目的地主机是关闭了,但公网ssh主机的autossh监控端口仍然处于监听状态,要等到一段时间后才能停用监听端口,这样在autossh监听端口未超时之前,目的地主机重新启动autossh会导致创建ssh隧道失败。

--------------------------引用结束--------------------

但是实测并不可行,估计是中间经过的交换机路由器防火墙等设备过滤了这种心跳包.

结论:

须使用默认的方式 -M 监听端口 来实现保持连接

 

posted @ 2024-06-12 17:34  dirgo  阅读(10)  评论(0编辑  收藏  举报