如何知道 ssh 已断开连接并使用 bash 脚本重试

sdn*_*hdi 1 ssh bash reverse

我正在使用反向 ssh 连接到远程客户端,操作员反向运行一次并离开客户端系统,当反向 ssh 与服务器断开连接时,我如何编写 bash 脚本,然后重试连接到服务器 (ssh)

l0b*_*0b0 7

如果您只是想重试命令直到成功,则可以使用以下模式:

while ! ssh [...]
do
    echo "Command failed, retrying..." >&2
done
Run Code Online (Sandbox Code Playgroud)


Jak*_*ake 6

使用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)