SSH隧道自动检测脚本

下面的脚本暴露本地22端口给192.168.2.1的2222,通过ssh 192.168.2.1 -p 2222可以连到本机。
另外,需要设置本机到192.168.2.1免密码登陆,具体方法查看如何设置SSH 免密码登陆

#!/bin/bash
PIDS=`ps -ef| grep ssh |grep 2222 | awk '{print $2}'`
if [ -z "$PIDS" ]; then  #查看服务是否开启
    ssh -C -f -N -g -R 2222:127.0.0.1:22 root@192.168.2.1
    echo "start ssh tunnel:`date`" >> /var/logs/ssh-log.txt
else
    nc -w 3 -z 192.168.2.1 2222 > /dev/null 2>&1
    if [ $? -ne 0 ]; then #查看端口是否通
         kill -9 $PIDS
         ssh -C -f -N -g -R 2222:127.0.0.1:22 root@192.168.2.1
         echo "kill and start ssh tunnel:`date`" >> /var/logs/ssh-log.txt
    fi
fi

因为ssh 隧道有时会自动关闭,所以需要crontab 添加每分钟检测一次

*/1 * * * * /home/ssh-tunnel.sh

如需转载,请注明出处: https://chadou.me/p/211

最新发布