ssh隧道遠程訪問內網
一、通過ssh隧道遠程訪問公司內網服務器方法
1,場景
vps主機一臺(centos) --B
處於公司內網中的服務器 --C
公司外部可連接互聯網的電腦 --A
2, 目的
在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 [email protected]
-p port 按提示輸入密碼
M.M.M.M、port、username分別替換成你的B服務器IP、ssh端口號
、用戶名。
c)
在A某電腦上執行
ssh [email protected] -p
27070
username與X.X.X.X分別替換爲你的B服務器的用戶名與IP,這樣就可以成功在A某電腦上遠程登陸C公司內網服務器了
4,注意
B
VPS雲服務器的防火牆要開放27070端口
二、在C公司內服務器上創建守護腳本,並設置開機啓動,用於啓動並監測ssh -CqfTnN ....命令,例:
#! /bin/sh
while true ; do
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 [email protected] -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 [email protected] -p port
fi
done
exit 0
三、在進行以上第二步操作時,需要建立信任關係,把C主機生成的key,放在B服務器上,這樣執行守護腳本連接服務器B時,就不需要輸入密碼了。注意C生成key時要生成root用戶的key,執行守護腳本要使用root權限
建立信任關係的方法:
http://jingyan.baidu.com/article/925f8cb8f1db23c0dce05675.html
參考:http://blog.csdn.net/death_spank/article/details/7403554
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.