开机自动启动autossh
1 功能
我有一个本地服务器,想通过网络服务器端口映射的方式供其他主机连接。具体使用 SSH 端口映射的方式,并且希望在重新启动后,登录之前也能正常连接。
2 原理
定期检查 SSH 连接是否仍然正常,并在发现连接中断或不稳定时重新启动 SSH 进程。
它会创建一个额外的 " 监控端口 "(通常由 -M
选项指定),通过这个端口发送和接收数据包。如果发现数据包不能通过这个监控端口到达远程服务器,就认为连接已断开。如果不设置
-M
端口,autossh 会依赖于 SSH 本身的心跳(通过
ServerAliveInterval 等参数)来进行监控。
3 操作
3.1 配置服务
1 | vi /etc/systemd/system/autossh.service |
3.2 启动服务
1 | $ systemctl daemon-reload |
3.3 注意
- 设置中的 ExecStart 需要设置阻塞命令,否则无法正常运行。
- 如遇到错误,可以使用以下命令进行调试:journalctl -u autossh.service。
- 如果需要开启多个端口(如 55556),最好在它们之间空出一些号码,以免出现错误(设为 55556 时,会同时开启 55556 和 55557)。
- 在使用 autossh 前至少用 ssh 连一次,使服务器进入 known_hosts
- 最好在 server client 都设置心跳,否则可能发生连接僵死,用 autossh 会发生一开始正常,后面就连不通的情况,详见 租用云服务器_配置
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.