关于autoSSH保持连接的两种方法
使用ssh端口转发功能进行内网穿透,但是经过的网络稍有不稳定就可能导致连接断开,所以考虑使用工具 AutoSSH,按照默认使用还需要一个监听端口,考虑到安全尽量少开端口,是否可以不用,很多文章都提到了可以用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 监听端口 来实现保持连接
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
2023-06-12 [转]apache.poi版本3与4的使用差异
2023-06-12 [转]Maven dependencyManagement与dependencies区别
2023-06-12 [转]POI 解析excel报错 java.lang.NoClassDefFoundError: org/apache/poi/ss/usermodel/Date1904Support