SSH代理(如sshuttle
或socat
)在连接断开时自动重连的功能可以通过一些配置和脚本实现。以下是两种常见的方法:
方法一:使用autossh
autossh
是一个自动重连SSH隧道的工具。它会在连接断开时自动尝试重新连接。
-
安装
autossh
:- 在Debian/Ubuntu上:
sudo apt-get install autossh
- 在CentOS/RHEL上:
sudo yum install autossh
- 在macOS上:
brew install autossh
- 在Debian/Ubuntu上:
-
使用
autossh
创建SSH隧道:autossh -M 0 -N -o "ServerAliveInterval 30" -o "ServerAliveCountMax 3" -p
@ -L : : 解释:
-M 0
:禁用监控端口。-N
:不执行命令,只保持隧道连接。-o "ServerAliveInterval 30"
:每30秒发送一次保活信号。-o "ServerAliveCountMax 3"
:连续3次保活失败后断开连接。-p
:SSH端口。
:远程服务器地址和用户名。@ -L
:本地端口转发配置。: :
方法二:使用socat
socat
是一个多功能的网络工具,可以用来创建各种网络连接,包括自动重连的SSH代理。
-
安装
socat
:- 在Debian/Ubuntu上:
sudo apt-get install socat
- 在CentOS/RHEL上:
sudo yum install socat
- 在macOS上:
brew install socat
- 在Debian/Ubuntu上:
-
使用
socat
创建SSH隧道:socat TCP-LISTEN:8080,fork SSH:+
,server,permit_root=0,user= @ 解释:
TCP-LISTEN:8080,fork
:监听本地端口8080,并在后台启动新的进程。SSH:+
:通过SSH连接到远程服务器。server
:作为SSH服务器运行。permit_root=0
:不允许root用户通过。user=
:远程服务器地址和用户名。@
总结
这两种方法都可以实现SSH代理的自动重连功能。autossh
更简单,适合大多数用户;而socat
功能更强大,适合需要更多自定义配置的用户。选择哪种方法取决于你的具体需求。