我正在使用反向 ssh 连接到远程客户端,操作员反向运行一次并离开客户端系统,当反向 ssh 与服务器断开连接时,我如何编写 bash 脚本,然后重试连接到服务器 (ssh)
如果您只是想重试命令直到成功,则可以使用以下模式:
while ! ssh [...]
do
echo "Command failed, retrying..." >&2
done
Run Code Online (Sandbox Code Playgroud)
使用autossh。Autossh“自动重启 [s] SSH 会话和隧道”
sudo apt-get install autossh
Run Code Online (Sandbox Code Playgroud)
我使用 autossh 来保持我依赖的反向隧道打开。即使长时间失去连接,它也能很好地工作。
这是我用来创建隧道的脚本:
#!/bin/bash
AUTOSSH_GATETIME=0
export AUTOSSH_GATETIME
autossh -f -N -R 8022:localhost:22 username@host -o "ServerAliveInterval 45" -o "ServerAliveCountMax 2"
Run Code Online (Sandbox Code Playgroud)
我在启动时用这个 cronjob 执行这个脚本:
@reboot /home/scripts/./persistent-tunnel.sh
Run Code Online (Sandbox Code Playgroud)