linux SSH 隧道打通鏈接

一 什麼是SSH隧道

  首 先看下面這張圖,咱們所面臨的大部分狀況都和它相似。咱們的電腦在右上角,經過公司帶有防火牆功能的路由器接入互聯網(固然可能還有交換機什麼的在中間連 接着你和路由器,可是在咱們的問題中交換機並不起到什麼關鍵性的做用)。左下腳的部分是一個網站的服務器,它是咱們公司防火牆策略的一部分,也就是說公司 不但願咱們訪問這個服務器。在左上還有一臺機器,它也是屬於咱們的。可是這臺機器並不在咱們公司裏面,換句話說他不受到公司防火牆的限制。最後也是最重 要的一點是,咱們可以在公司經過互聯網直接訪問這臺機器。或者說這臺位於公司防火牆外面的機器須要擁有一個獨立的互聯網IP,同時公司的防火牆規則不會屏 蔽這臺機器,而且這臺機器運行着一個OpenSSH服務器。html

 

現 在,咱們清楚地知道了本身所處的網絡環境。而且不難理解咱們在公司沒法訪問那個服務器的緣由是:線路A-B-C上A-B之間的防火牆屏蔽了對那個服務器的 訪問。與此同時,咱們也很快注意到,線路A-B-D之間、D-C之間是不受阻礙的。相信你已經想到了,在A-B之間的防火牆不會屏蔽對機器d的訪問。所以 咱們能夠經過機器d創建一個通道A-B-D-C,從而訪問到機器c上的數據。服務器

這條通道能夠用不少技術來創建,這裏咱們僅僅介紹如何使用SSH服務器來創建這樣一個通道-他被稱爲SSH隧道。網絡

2、創建SSH隧道

在咱們計劃創建一個本地SSH隧道以前,咱們必須清楚下面這些數據:ssh

  1. 中間服務器d的IP地址
  2. 要訪問服務器c的IP地址
  3. 要訪問服務器c的端口

如今,咱們把上面這張圖變得具體一些,給這些機器加上IP地址。而且根據下面這張圖列出咱們的計劃:ide

  1. 須要訪問234.234.234.234的FTP服務,也就是端口21
  2. 中間服務器是123.123.123.123

如今咱們使用下面這條命令來達成咱們的目的網站

ssh -N -f -L 2121:234.234.234.234:21 123.123.123.123
ftp localhost:2121 # 如今訪問本地2121端口,就能鏈接234.234.234.234的21端口了

這裏咱們用到了SSH客戶端的三個參數,下面咱們一一作出解釋:spa

  • -N 告訴SSH客戶端,這個鏈接不須要執行任何命令。僅僅作端口轉發
  • -f 告訴SSH客戶端在後臺運行
  • -L 作本地映射端口,被冒號分割的三個部分含義分別是最後一個參數是咱們用來創建隧道的中間機器的IP地址(IP: 123.123.123.123)
    • 須要使用的本地端口號
    • 須要訪問的目標機器IP地址(IP: 234.234.234.234)
    • 須要訪問的目標機器端口(端口: 21)

咱們再重複一下-L參數的行爲。-L X:Y:Z的含義是,將IP爲Y的機器的Z端口經過中間服務器映射到本地機器的X端口.net

在這條命令成功執行以後,咱們已經具備繞過公司防火牆的能力,而且成功訪問到了咱們喜歡的一個FTP服務器了。3d

3、AutoSSH

使用SSH的方式不夠穩定,使用AutoSSH能夠自動在鏈接斷開時自動重連,再把AutoSSH加入系統服務自動啓動,則能夠作到穩定的鏈接。orm

autossh是個很好的東西,他是用來保證SSH隧道鏈接穩定性的。在Ubuntu下安裝

apt-get install autossh

使用方法很簡單,好比原來直接用ssh的命令:

ssh -N -v -D localhost:8527 root@remote_ssh_server -p remote_ssh_port

如今改爲:

autossh -M 5122 -N -v -D localhost:8527 root@remote_ssh_server -p remote_ssh_port

本文出自http://www.javashuo.com/article/p-qbqtzrxe-bp.html

autossh原理解析參考https://blog.csdn.net/wesleyflagon/article/details/85304336

相關文章
相關標籤/搜索