如何将现有SSH命令适配为AutoSSH以维持稳定连接?
解决AutoSSH适配反向SSH隧道的问题
直接用AutoSSH执行原命令失败,大多是因为它的默认检测机制或参数配置和原生SSH不兼容,你可以按以下方式调整:
- 指定心跳检测端口
AutoSSH需要额外端口做连接存活检测,默认配置可能和你的443端口冲突,显式指定两个未被占用的端口(比如20000):
autossh -M 20000 -R 443:localhost:443 remote.moe
-M参数用来设置监控连接的端口,AutoSSH会通过这个端口发送心跳包检测连接状态,断开后自动重连。
- 用原生SSH心跳替代AutoSSH监控
如果你的SSH版本支持ServerAliveInterval和ServerAliveCountMax,可以关闭AutoSSH自带监控,让SSH自己处理心跳:
autossh -M 0 -o "ServerAliveInterval 30" -o "ServerAliveCountMax 3" -R 443:localhost:443 remote.moe
-M 0:关闭AutoSSH的监控机制ServerAliveInterval 30:每30秒向服务器发一次心跳ServerAliveCountMax 3:连续3次心跳无响应就断开重连后台运行并记录日志
要让AutoSSH在后台运行,加上-f参数,同时指定日志文件方便排查问题:
autossh -f -M 0 -o "ServerAliveInterval 30" -o "ServerAliveCountMax 3" -R 443:localhost:443 remote.moe -E /var/log/autossh.log
-f:让进程后台运行;-E:将日志输出到指定文件。
额外注意:
- 确保
remote.moe服务器的sshd配置允许反向隧道,检查/etc/ssh/sshd_config里的GatewayPorts是否设为yes或clientspecified,否则外部无法访问这个反向端口。 - 如果服务器用的是非标准SSH端口,要加上
-p参数,比如-p 2222。
内容的提问来源于stack exchange,提问作者Alper Samur
相关产品推荐
相关产品推荐

