一、通过ssh隧道远程访问公司内网服务器方法
1,场景
vps主机一台(centos) --B
处于公司内网中的服务器 --C
公司外部可连接互联网的电脑 --A
在A电脑上通过B服务器访问C
3,方法
a) 在B VPS云服务器上执行
ssh -CfqTnN
-L X.X.X.X:27070:127.0.0.1:17070 username@localhost
按提示输入密码
X.X.X.X替换成你的B服务器IP,username替换成你的C服务器用户名
b) 在C公司内网服务器上执行
ssh -CqfTnN
-R 17070:127.0.0.1:22 username@M.M.M.M
-p port 按提示输入密码
M.M.M.M、port、username分别替换成你的B服务器IP、ssh端口号
、用户名。
c)
在A某电脑上执行
ssh username@X.X.X.X -p
27070
username与X.X.X.X分别替换为你的B服务器的用户名与IP,这样就可以成功在A某电脑上远程登陆C公司内网服务器了
4,注意
B
VPS云服务器的防火墙要开放27070端口
sleep 10
NUM=`netstat -napt |grep
ESTABLISHED |grep M.M.M.M |wc -l`
查看BC主机间的连接是否存在,NUM为1,视为存在该连接。
echo $NUM >
/tmp/caosxtest
if [ "${NUM}" -lt "1" ];
then //NUM小于1,执行以下命令
echo "a"
ssh -CqfTnN -R
17070:127.0.0.1:22 username@M.M.M.M -p port
elif [ "${NUM}" -gt "1"
]; then //NUM大于1,杀死所以ssh进程,并启动与B服务的连接
echo "b"
killall -9 ssh
ssh -CqfTnN -R
17070:127.0.0.1:22 username@M.M.M.M -p port
fi
2, 目的
二、在C公司内服务器上创建守护脚本,并设置开机启动,用于启动并监测ssh -CqfTnN ....命令,例:
#! /bin/sh
while true ; do
done
exit 0
三、在进行以上第二步操作时,需要建立信任关系,把C主机生成的key,放在B服务器上,这样执行守护脚本连接服务器B时,就不需要输入密码了。注意C生成key时要生成root用户的key,执行守护脚本要使用root权限
建立信任关系的方法:
http://jingyan.baidu.com/article/925f8cb8f1db23c0dce05675 .html
参考:http://blog.youkuaiyun.com/death_spank/article/details/7403554