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
發佈了368 篇原創文章 · 獲贊 36 · 訪問量 25萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章