使用ssh端口转发功能进行内网穿透,但是经过的网络稍有不稳定就可能导致连接断开,所以考虑使用工具 AutoSSH,按照默认使用还需要一个监听端口,考虑到安全尽量少开端口,是否可以不用,很多文章都提到了可以用ssh自身保持连接的方法,如下面这篇:
其中提到:
------------------------引用开始---------------------
autossh -M 0 -o "ServerAliveInterval 5" -o "ServerAliveCountMax 1" \
-NR 17780:192.168.22.1:5900 [email protected] -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 监听端口 来实现保持连接
标签:autossh,两种,主机,端口,autoSSH,监听,ssh,连接 From: https://www.cnblogs.com/dirgo/p/18244392