ssh快速入門

GeekWay發表於2014-05-17

ssh快速入門

ssh是替代telnet的技術,最主要的特點是傳輸加密服務。

telnet的預設tcp埠是23,而ssh的tcp埠是22。

ssh埠轉發技術的作用

  • 資料加密
  • 突破防火牆的限制 ★

埠轉發的分類

  • 本地轉發 (local forwarding)
  • 遠端轉發 (remote forwarding)
  • 動態轉發 (dynamic forwarding)

本地轉發

語法:

ssh -L [bind_address] port:host:hostport server_address

解析: L: Local host bind_address:如果省寫,則預設使用127.0.0.1,這時本地轉發只能對本機提供服務;如果使用bind_address,即使用一個固定的ip (可以是本臺機器上的一個網路卡的ip),則內網其他的人也可以使用這個地址進行埠轉發。注意這裡的使用ssh客戶端 port:開啟這個port埠,建議不要設定太 小,以免跟其他埠衝突, host:你想訪問資源的遠端主機ip hostport:那些資源對應的埠 server_address:可以跟host的ip相同,也可以不同。注意這裡使用ssh服務端

還有一些常用的選項: -N : 不執行命令,和-f配合使用 -f: 在後臺執行,不用登陸到遠端主機,即命令列顯示的還是本機內容。

示例:

1.

主機A:10.10.10.1
伺服器B:10.10.10.2

上面3臺機器可以互相訪問

我們可以使用A的ssh客戶端通過監聽7788埠,訪問B的80埠資源,跟B建立一個通道,可以使用下面的命令:

ssh -Nf -L 10.10.10.1:7788:10.10.10.2:80 10.10.10.2

其中的server_address可以是能夠訪問到B(10.10.10.2)的其他主機。

接下來,我們就可以使用本機瀏覽器的7788埠訪問到伺服器端,然後伺服器端訪問80埠。

2.繞過防火牆訪問主機

主機A:10.10.10.1
伺服器B:10.10.10.2
伺服器C:10.10.10.3

其中A和C之間有防火牆阻隔,導致A不能直接訪問C,但B可以訪問C,這裡我們就可以使用主機A通過B訪問到C:

ssh -Nf -L 7788:10.10.10.3:80 10.10.10.2   //注意寫法

我們沒有寫bind_address,這裡就預設使用127.0.0.1,我們通過B( 10.10.10.2)跟C(10.10.10.3)建立通道。

遠端轉發

遠端轉發和本地轉發本質沒有什麼區別,唯一不同的是,本地轉發是在本地開啟一個指定的埠,遠端轉發是在遠端開啟一個指定的埠,而且使用的命令選項也不同,遠端轉發使用-R。 命令:

ssh -R [bind_address]:port:host:hostport server_address

bind_address:這裡一定要注意的是遠端主機的ip port:遠端主機上面要開放的埠 host:你想讓它訪問的主機ip hostport:資源對應的埠 server_address:你想跟誰建立一個通道

示例

公司內網的主機A(10.10.10.10 )可以通過防火牆或路由器訪問外網,但一般情況下外網不可以直接訪問內網主機A。假如我們公司出差,想通過外網訪問到公司的主機A,這時我們就可以聯絡公司的同事,使用下面的命令讓內網A和外網主機(假設C)建立通道:
ssh -Nf -R 192.168.1.150:7788:10.10.10.10:80 192.168.1.150

這時,內網伺服器就和外網(192.168.1.150)建立好了連線,外網就可以通過這條連結訪問到內網的伺服器了,注意,這時的內網伺服器使用的還是ssh客戶端,而外網使用的是ssh伺服器。

動態埠轉發

特點:本地轉發和遠端轉發的共同特點是隻能訪問某一個主機上面的某一個資源(埠port),如果我們想訪問很多遠端主機上的資源的話,我們就可以使用動態轉發技術。 類似於代理伺服器 命令更加簡單:

ssh -D [bind_address:]port server_address

server_address:跟它建立通道。只要它能訪問各種資源,那麼我們就可以通過bind_address的port通過通道訪問server_address,進而訪問到server_address的資源了。 所以確實像一臺代理伺服器的效果了。

示例

主機A(10.10.10.10),不能訪問外網
主機B(10.10.10.20),可以訪問外網

這時,我們就能夠讓A和B建立一個通道,然後讓A可以訪問外網。 我們在A上設定命令:

ssh -Nf -D 10.10.10.10:7788 10.10.10.20

之後我們還需要在瀏覽器上設定一下代理,然後我們就能夠通過B訪問外網了。