会话断开时客户端 ssh 进程不会终止

会话断开时客户端 ssh 进程不会终止

我有一台主机需要部署在一个网络上,一段时间内我将无法物理访问该主机,因此我使用 cron 和以下脚本从指南中建立了持久的反向 ssh 连接:

#!/bin/bash

# install with crontab -e
# */1 * * * * /root/scripts/ssh_tunnel.sh > tunnel.log 2>&1

createTunnel() {
  /usr/bin/ssh -i /home/user/cert.pem -N -R 9999:localhost:22 [email protected]
  if [[ $? -eq 0 ]]; then
    echo Tunnel to jumpbox created successfully
  else
    echo An error occurred creating a tunnel to jumpbox. RC was $?
  fi
}

/bin/pidof ssh
if [[ $? -ne 0 ]]; then
  echo Creating new tunnel connection
  createTunnel
fi

cron 任务非常简单:

crontab -e
*/1 * * * * /root/scripts/ssh_tunnel.sh > tunnel.log 2>&1

我需要 ssh 会话在发生中断时自动重新建立。目前,如果服务器上的 sshd 进程终止,客户端上的进程不会终止,因此脚本不会尝试建立新会话。
我注意到,当从交互式终端手动启动连接时,没有问题,也就是说,客户端在终止时与服务器端进程一起死亡。

任何帮助都将不胜感激,谢谢。

相关内容