ssh是用來遠(yuǎn)程登錄主機(jī)的作用大家都知道,而且傳輸?shù)膬?nèi)容全部經(jīng)過加密處理也是大家喜歡其的主要因素。但其實(shí)ssh能做的更多,例如作為代理服務(wù)器。
通過ssh 的-D參數(shù),我們可以在本地搭建一個socks5服務(wù)器,具體使用方法如下:
ssh -qTNf -D 127.0.0.1:12345 test@222.333.444.555
其中-q表示該命令進(jìn)入安靜模式
-T是指該命令不占用shell
-N是指該命令不執(zhí)行遠(yuǎn)程命令
-f是指該命令在后臺運(yùn)行
-D是該命令重要參數(shù),他的后面跟著socks5服務(wù)器的地址與端口
最后就是遠(yuǎn)程服務(wù)器用戶名和地址
執(zhí)行完該命令后,我們需要在瀏覽器中設(shè)置代理服務(wù)器,地址和端口就是上面提到的,然后記得選擇socks5協(xié)議。那么以后每瀏覽一個頁面,都會先經(jīng)過代理服務(wù)器,然后再去請求頁面,接著頁面先到達(dá)代理服務(wù)器,最后才返回我們自己的瀏覽器。過程好像變得復(fù)雜了,但是這樣的作用是什么呢,很常見,例如有一些校園網(wǎng)是限制ipv4流量的,如果我們找到一臺支持ipv6的遠(yuǎn)程服務(wù)器,而且校園網(wǎng)大部分都支持ipv6,那么我們就能通過建立ipv6代理服務(wù)器來無流量限制上網(wǎng)了。再者,如果我們能找到外國的免費(fèi)服務(wù)器,能讓我們通過ssh登錄,那么我們通過建立代理服務(wù)器來翻墻了,翻墻后能做的事情就請讀者自行腦補(bǔ)吧。
接下來繼續(xù)講的是ssh的端口映射功能,這個也相當(dāng)好用,例如我們在家如果想訪問公司或?qū)W校的資源,我們需要先登錄一臺擁有公網(wǎng)ip的服務(wù)器,然后在訪問局域網(wǎng)的主機(jī),譬如,我們是A主機(jī),需要訪問學(xué)校的C主機(jī),而只有學(xué)校B主機(jī)有公網(wǎng)ip,我們需要先登錄B主機(jī),然后才能訪問C主機(jī)。過程很麻煩,這時我們就需要做一個端口映射了,而這個ssh也能幫我們完成。具體命令如下:
ssh -N -f -L 127.0.0.1:12345:10.21.0.34:22 test@12.3..4.5
其中-N,-f作用上面已經(jīng)講了,這里最重要的是-L命令,它作用是做本地映射,使得遠(yuǎn)程服務(wù)器的端口相當(dāng)于本地某自定義的端口,如上面的命令,本地的12345端口就相當(dāng)于10.21.0.34的22端口,以后我只需要使用ssh user@127.0.0.1 -p 12345命令就能登錄10.21.0.34了,注意user是10.21.0.34的用戶,最后就是我們所使用的中間服務(wù)器,這個地址需要是我們直接訪問到的。其實(shí)上面所說的A主機(jī)就是127.0.0.1,B主機(jī)就是12.3.4.5,C主機(jī)就是10.21.0.34。當(dāng)然了,有本地映射肯定有遠(yuǎn)程映射,就是把-L換成-R,這樣我們訪問遠(yuǎn)程主機(jī)的端口就相當(dāng)于訪問本地的端口,但我沒發(fā)現(xiàn)該功能的更多用途。
如果你沒有什么中間服務(wù)器,只是想做個端口映射,那也很簡單,如下:
ssh -N -f -L 12345:12.3.4.5:22 test@12.3.4.5
就是把遠(yuǎn)程服務(wù)器地址寫成中間服務(wù)器地址就完事了。
學(xué)習(xí)完ssh這些用法后有沒有對ssh產(chǎn)生無比崇敬的心情的,各種膜拜啊。