代码: 全选
#!/bin/sh
REMOTE_HOST="远程主机地址"
REMOTE_ACCOUNT="远程主机账号"
REMOTE_PORT="远程主机端口"
REMOTE_PORT_CFG="http://www.xxxxxx.cn/remote.txt"
PORT=`curl $REMOTE_PORT_CFG 2>/dev/null`
PID=`ps ax|grep ssh|grep $REMOTE_HOST|grep $PORT:localhost | awk '{print $1}'`
if [ "$PORT" = "" ]
then
if [ "$PID" = "" ]
then
echo "No process!"
else
echo "kill -9 $PID"
kill -9 $PID
fi
else
if [ "$PID" = "" ]
then
echo "ssh -f -N -R $PORT:localhost:22 -p $REMOTE_PORT $REMOTE_ACCOUNT@$REMOTE_HOST"
ssh -f -N -R $PORT:localhost:22 -p $REMOTE_PORT $REMOTE_ACCOUNT@$REMOTE_HOST
else
echo "Alreay exist!"
fi
fi
把该脚本放置在公司内网机器中,并且设置成 cron 每隔一段时间执行。
REMOTE_PORT_CFG 为放置ssh反向连接后,在远程主机中的端口号。
把本机的ssh public 证书放到远程主机上的信任证书列表中,使得 ssh 连接时不用输入密码。
使用举例:
家中电脑已经用了动态域名: test.51vip.biz
家中电脑的SSH端口为:22
家中电脑的SSH账号为:root
公司内网主机获取端口的文件URL: http://test.51vip.biz/remote.txt
代码: 全选
#!/bin/sh
REMOTE_HOST="test.51vip.biz"
REMOTE_ACCOUNT="root"
REMOTE_PORT="22"
REMOTE_PORT_CFG="http://test.51vip.biz/remote.txt"
PORT=`curl $REMOTE_PORT_CFG 2>/dev/null`
PID=`ps ax|grep ssh|grep $REMOTE_HOST|grep $PORT:localhost | awk '{print $1}'`
if [ "$PORT" = "" ]
then
if [ "$PID" = "" ]
then
echo "No process!"
else
echo "kill -9 $PID"
kill -9 $PID
fi
else
if [ "$PID" = "" ]
then
echo "ssh -f -N -R $PORT:localhost:22 -p $REMOTE_PORT $REMOTE_ACCOUNT@$REMOTE_HOST"
ssh -f -N -R $PORT:localhost:22 -p $REMOTE_PORT $REMOTE_ACCOUNT@$REMOTE_HOST
else
echo "Alreay exist!"
fi
fi
该脚本会自动连接到 test.51vip.biz:22,并且在 test.51vip.biz上 打开 127.0.0.1:10000 端口。
此时,我们只需要在家中机器上执行 ssh -p 10000 xxxx@127.0.0.1 就可以跳到公司内网机器。
以上脚本还可以进一步修改,各种配置信息都可以由 网上的配置文件指定。
想让公司内机器断开连接,只需要把 http://test.51vip.biz/remote.txt 内容清空即可。