SSH代理(如sshuttle
或socat
)在連接斷開時自動重連的功能可以通過一些配置和腳本實現。以下是兩種常見的方法:
autossh
autossh
是一個自動重連SSH隧道的工具。它會在連接斷開時自動嘗試重新連接。
安裝autossh
:
sudo apt-get install autossh
sudo yum install autossh
brew install autossh
使用autossh
創建SSH隧道:
autossh -M 0 -N -o "ServerAliveInterval 30" -o "ServerAliveCountMax 3" -p <port> <user>@<host> -L <local_port>:<remote_host>:<remote_port>
解釋:
-M 0
:禁用監控端口。-N
:不執行命令,只保持隧道連接。-o "ServerAliveInterval 30"
:每30秒發送一次保活信號。-o "ServerAliveCountMax 3"
:連續3次保活失敗后斷開連接。-p <port>
:SSH端口。<user>@<host>
:遠程服務器地址和用戶名。-L <local_port>:<remote_host>:<remote_port>
:本地端口轉發配置。socat
socat
是一個多功能的網絡工具,可以用來創建各種網絡連接,包括自動重連的SSH代理。
安裝socat
:
sudo apt-get install socat
sudo yum install socat
brew install socat
使用socat
創建SSH隧道:
socat TCP-LISTEN:8080,fork SSH:+<port>,server,permit_root=0,user=<user>@<host>
解釋:
TCP-LISTEN:8080,fork
:監聽本地端口8080,并在后臺啟動新的進程。SSH:+<port>
:通過SSH連接到遠程服務器。server
:作為SSH服務器運行。permit_root=0
:不允許root用戶通過。user=<user>@<host>
:遠程服務器地址和用戶名。這兩種方法都可以實現SSH代理的自動重連功能。autossh
更簡單,適合大多數用戶;而socat
功能更強大,適合需要更多自定義配置的用戶。選擇哪種方法取決于你的具體需求。