一種通過SSH協(xié)議構(gòu)造隧道達成數(shù)據(jù)加密傳輸?shù)姆椒?/h1>
更新時間:2015年01月06日 15:33:35 投稿:mdxy-dxy
這篇文章主要介紹了一種通過SSH協(xié)議構(gòu)造隧道達成數(shù)據(jù)加密傳輸?shù)姆椒?需要的朋友可以參考下
OpenSSH在實現(xiàn)時,給我們提供一個簡單好用的Geek功能——端口轉(zhuǎn)發(fā)。說是一個功能,其實是兩個用法,一稱之為本地端口轉(zhuǎn)發(fā),一稱之為遠程端口轉(zhuǎn)發(fā)。
SSH端口轉(zhuǎn)發(fā)其實就是類似iptables的端口數(shù)據(jù)轉(zhuǎn)發(fā)功能,也即是將請求在某一個指定端口的數(shù)據(jù),轉(zhuǎn)發(fā)到另外一個指定的端口上。呵呵,很抽象啊~
下面說具體的用法:
下文的兩個注解:本地:指執(zhí)行SSH命令的發(fā)起端;遠程:SSH命令的連接端。執(zhí)行命令的環(huán)境要基于*nix或者是可以實現(xiàn)SSH命令效果的工具(如putty相關(guān)),服務(wù)所在的環(huán)境不限服務(wù)類型、不限操作系統(tǒng)。
SSH端口轉(zhuǎn)發(fā)之一:本地端口轉(zhuǎn)發(fā)
本地端口轉(zhuǎn)發(fā)是指通過SSH命令,在本地服務(wù)器Listen一個端口(如8000),然后將訪問這個端口的數(shù)據(jù)請求,轉(zhuǎn)發(fā)到遠程服務(wù)器的某一個服務(wù)端口上(如3306)。
有人也許會說廢話,難道我不能直接連接么?還用你這個?
其實這個有兩個場景也許你沒有想到:1、當(dāng)需要數(shù)據(jù)加密傳輸時;2、當(dāng)服務(wù)端口只能通過跳板機不能直接訪問時,如有些主機是沒有外網(wǎng)IP的。這兩個場景,直接連接是不可以的。
舉例說明:
假設(shè)我有本地虛擬機host1(192.168.1.100)工作機器,服務(wù)器host2(54.100.1.2)用作跳板機,服務(wù)器host3(10.0.0.9)上面部署得有MySQL服務(wù)(端口為3306)。host3是對外不開放。host1與host2可以通過ssh直連。host2與host3之間局域網(wǎng),防火墻互通。
當(dāng)我在host1上面的web服務(wù)器想訪問host3上面的MySQL服務(wù)時,直接訪問是肯定不行的。因為不通。此時,我們就可以通過SSH的端口轉(zhuǎn)發(fā)功能實現(xiàn)。
在host1上面執(zhí)行如下命令:
#ssh -CNfg -L 8000:10.0.0.9:3306 dbfen@54.100.1.2
然后輸入host2上dbfen賬號的SSH密碼。此時,我們在host1上,通過訪問本地的192.168.1.100:8000端口,即是訪問的host3上面的3306端口。host3上的MySQL授權(quán),針對host3(10.0.0.9)進行授權(quán)即可。
因為是通過的SSH長鏈接,這樣就可能達到數(shù)據(jù)的轉(zhuǎn)發(fā)及數(shù)據(jù)的加密傳輸。
怎么樣?是不是非常贊~
SSH端口轉(zhuǎn)發(fā)之二:遠程端口轉(zhuǎn)發(fā)
遠程端口轉(zhuǎn)發(fā)是指通過SSH命令,在遠程服務(wù)器Listen一個端口(如8000),然后將訪問這個端口的數(shù)據(jù)請求,轉(zhuǎn)發(fā)到本地的某一個服務(wù)端口上(如3306)。
跟本地端口轉(zhuǎn)發(fā)剛好反著~
舉例說明:
假設(shè)我有本地虛擬機host1(192.168.1.100)工作機器,服務(wù)器host2(54.100.1.2)用作跳板機,公司開發(fā)機host3(192.168.117.100)上面部署得有MySQL服務(wù)(端口為3306)。host3是開發(fā)機,無公網(wǎng)IP,可訪問外網(wǎng)。host1與host2可以通過ssh直連。host3可以直連上host2。
現(xiàn)在我在家里,當(dāng)我想訪問公司的開發(fā)機時,開發(fā)、測試時,摳門的老板又沒有部署VPN,絕逼是不可能的。。。是的。。。不可能的。。。可是該死的老板(小編別讓DBfen老板看見了哈)又要求解決問題~~~淚奔啊~~~苦逼的攻城獅~~~腫么辦~~~難道要我半夜爬去公司嗎??????
天不滅我!我有SSH遠程端口轉(zhuǎn)發(fā)!
在離開公司前,在公司開發(fā)機host3上執(zhí)行命令如下:
#ssh -CNfg -R 8022:192.168.117.100:22 dbfen@54.100.1.2
然后輸入host2上dbfen賬號的SSH密碼。此時,我在家、我在出差、我在飛機上、我在海上,只要我能夠上網(wǎng)、能夠上host2,哈哈,直接SSH去host2,然后在host2上,輸入下面的命令:
# ssh root@127.0.0.1 -p 8022
輸入host3上root賬號的SSH密碼~開發(fā)機,我來啦~~~老板,我正在解決問題,我不用去公司的,我可以很快解決問題的啦~~~
有沒有很開心?
額,等等,你這個,還有一點兒問題啊,我host2服務(wù)器上面還得開放host2的SSH端口,host2上面還有重要數(shù)據(jù)~現(xiàn)在黑闊蟈蟈好兇的~好危險的喲~~~親,有解決辦法,附加一條我們的本地端口轉(zhuǎn)發(fā)馬上解決問題,在host2上執(zhí)行下面的命令
# ssh -CNfg -L 8024:127.0.0.1:8022 dbfen@54.100.1.2
然后輸入host2上dbfen賬號的SSH密碼。以后在家里、在海里、在天上,我只需要直接訪問54.100.1.2:8024即可自動訪問上host3上面的22端口,不再需要再登陸上host2(可以把host2上除8024外的所有端口全封了),然后登陸host3了~~~
怎么樣?咦,感覺這個功能在哪兒見過啊~這個東西我在哪兒見過。沒錯,花生殼代理!這就是不同實現(xiàn)啦!
下班回家~~~偶們也可以在家工作了~~~
等等…
既然大家這么嗨,我再給大家說一個應(yīng)用場景,出過差的蟈蟈,有沒有遇到這樣的情況:當(dāng)某個功能或者東西你不熟悉時,你需要求助于相關(guān)同事,而客戶的服務(wù)器又不讓遠程登陸,這個同事在遙遠的天邊。。。咋辦呢,讓丫飛過來?估計老板不讓。哈,我有QQ協(xié)助~~~
哈~你真2,QQ遠程協(xié)助也是人用的么?延遲得想讓人發(fā)瘋~
有辦法的~
帶上你的筆記本電腦(host1),去客戶的機房,一根網(wǎng)線接入客戶的服務(wù)器(host2),wifi連接上外網(wǎng),找一臺臨時的外網(wǎng)服務(wù)器(host3),操作如下:
在host3上面執(zhí)行如下命令:
# ssh -CNfg -L 8022:127.0.0.1:8021 root@127.0.0.1
輸入host3的root密碼
在host1上面執(zhí)行如下命令:
# ssh -CNfg -R 8021:host2:22 root@host3
輸入host3的root密碼
然后讓同事丫的趕緊連接host3:8022客戶服務(wù)器,給客戶解決問題?。?!
相關(guān)文章
-
將 PFX,JKS 證書轉(zhuǎn)換為 PEM 格式方法
這篇文章主要介紹了將 PFX,JKS 證書轉(zhuǎn)換為 PEM 格式方法,需要的朋友可以參考下 2024-01-01
-
Tornado Web服務(wù)器中處理空白字符的解決方案
這篇文章主要介紹了Tornado Web服務(wù)器中處理空白字符的解決方案,本文通過修改Tornado源碼解決這個問題,需要的朋友可以參考下 2015-01-01
-
阿里云ECS服務(wù)器輕松搭建ThinkPHP環(huán)境
本文指導(dǎo)在阿里云ECS?CentOS?7.9上部署ThinkPHP框架,涉及安裝PHP、Composer、Apache,配置虛擬主機解決URL問題及目錄權(quán)限設(shè)置,確保項目正常運行,感興趣的朋友跟隨小編一起看看吧 2025-08-08
-
Nodejs創(chuàng)建TCP服務(wù)器 - king0222
這篇文章主要介紹了Nodejs創(chuàng)建TCP服務(wù)器 - king0222的相關(guān)資料,需要的朋友可以參考下 2015-09-09
-
iisapp.vbs iis pid了解對應(yīng)的網(wǎng)站或應(yīng)用池
有時候突然發(fā)現(xiàn)某個w3wp.exe進程,占用較大的自由,想看看是哪個網(wǎng)站,然后再解決問題。下面是具體的方法。 2009-10-10
最新評論
OpenSSH在實現(xiàn)時,給我們提供一個簡單好用的Geek功能——端口轉(zhuǎn)發(fā)。說是一個功能,其實是兩個用法,一稱之為本地端口轉(zhuǎn)發(fā),一稱之為遠程端口轉(zhuǎn)發(fā)。
SSH端口轉(zhuǎn)發(fā)其實就是類似iptables的端口數(shù)據(jù)轉(zhuǎn)發(fā)功能,也即是將請求在某一個指定端口的數(shù)據(jù),轉(zhuǎn)發(fā)到另外一個指定的端口上。呵呵,很抽象啊~
下面說具體的用法:
下文的兩個注解:本地:指執(zhí)行SSH命令的發(fā)起端;遠程:SSH命令的連接端。執(zhí)行命令的環(huán)境要基于*nix或者是可以實現(xiàn)SSH命令效果的工具(如putty相關(guān)),服務(wù)所在的環(huán)境不限服務(wù)類型、不限操作系統(tǒng)。
SSH端口轉(zhuǎn)發(fā)之一:本地端口轉(zhuǎn)發(fā)
本地端口轉(zhuǎn)發(fā)是指通過SSH命令,在本地服務(wù)器Listen一個端口(如8000),然后將訪問這個端口的數(shù)據(jù)請求,轉(zhuǎn)發(fā)到遠程服務(wù)器的某一個服務(wù)端口上(如3306)。
有人也許會說廢話,難道我不能直接連接么?還用你這個?
其實這個有兩個場景也許你沒有想到:1、當(dāng)需要數(shù)據(jù)加密傳輸時;2、當(dāng)服務(wù)端口只能通過跳板機不能直接訪問時,如有些主機是沒有外網(wǎng)IP的。這兩個場景,直接連接是不可以的。
舉例說明:
假設(shè)我有本地虛擬機host1(192.168.1.100)工作機器,服務(wù)器host2(54.100.1.2)用作跳板機,服務(wù)器host3(10.0.0.9)上面部署得有MySQL服務(wù)(端口為3306)。host3是對外不開放。host1與host2可以通過ssh直連。host2與host3之間局域網(wǎng),防火墻互通。
當(dāng)我在host1上面的web服務(wù)器想訪問host3上面的MySQL服務(wù)時,直接訪問是肯定不行的。因為不通。此時,我們就可以通過SSH的端口轉(zhuǎn)發(fā)功能實現(xiàn)。
在host1上面執(zhí)行如下命令:
#ssh -CNfg -L 8000:10.0.0.9:3306 dbfen@54.100.1.2
然后輸入host2上dbfen賬號的SSH密碼。此時,我們在host1上,通過訪問本地的192.168.1.100:8000端口,即是訪問的host3上面的3306端口。host3上的MySQL授權(quán),針對host3(10.0.0.9)進行授權(quán)即可。
因為是通過的SSH長鏈接,這樣就可能達到數(shù)據(jù)的轉(zhuǎn)發(fā)及數(shù)據(jù)的加密傳輸。
怎么樣?是不是非常贊~
SSH端口轉(zhuǎn)發(fā)之二:遠程端口轉(zhuǎn)發(fā)
遠程端口轉(zhuǎn)發(fā)是指通過SSH命令,在遠程服務(wù)器Listen一個端口(如8000),然后將訪問這個端口的數(shù)據(jù)請求,轉(zhuǎn)發(fā)到本地的某一個服務(wù)端口上(如3306)。
跟本地端口轉(zhuǎn)發(fā)剛好反著~
舉例說明:
假設(shè)我有本地虛擬機host1(192.168.1.100)工作機器,服務(wù)器host2(54.100.1.2)用作跳板機,公司開發(fā)機host3(192.168.117.100)上面部署得有MySQL服務(wù)(端口為3306)。host3是開發(fā)機,無公網(wǎng)IP,可訪問外網(wǎng)。host1與host2可以通過ssh直連。host3可以直連上host2。
現(xiàn)在我在家里,當(dāng)我想訪問公司的開發(fā)機時,開發(fā)、測試時,摳門的老板又沒有部署VPN,絕逼是不可能的。。。是的。。。不可能的。。。可是該死的老板(小編別讓DBfen老板看見了哈)又要求解決問題~~~淚奔啊~~~苦逼的攻城獅~~~腫么辦~~~難道要我半夜爬去公司嗎??????
天不滅我!我有SSH遠程端口轉(zhuǎn)發(fā)!
在離開公司前,在公司開發(fā)機host3上執(zhí)行命令如下:
#ssh -CNfg -R 8022:192.168.117.100:22 dbfen@54.100.1.2
然后輸入host2上dbfen賬號的SSH密碼。此時,我在家、我在出差、我在飛機上、我在海上,只要我能夠上網(wǎng)、能夠上host2,哈哈,直接SSH去host2,然后在host2上,輸入下面的命令:
# ssh root@127.0.0.1 -p 8022
輸入host3上root賬號的SSH密碼~開發(fā)機,我來啦~~~老板,我正在解決問題,我不用去公司的,我可以很快解決問題的啦~~~
有沒有很開心?
額,等等,你這個,還有一點兒問題啊,我host2服務(wù)器上面還得開放host2的SSH端口,host2上面還有重要數(shù)據(jù)~現(xiàn)在黑闊蟈蟈好兇的~好危險的喲~~~親,有解決辦法,附加一條我們的本地端口轉(zhuǎn)發(fā)馬上解決問題,在host2上執(zhí)行下面的命令
# ssh -CNfg -L 8024:127.0.0.1:8022 dbfen@54.100.1.2
然后輸入host2上dbfen賬號的SSH密碼。以后在家里、在海里、在天上,我只需要直接訪問54.100.1.2:8024即可自動訪問上host3上面的22端口,不再需要再登陸上host2(可以把host2上除8024外的所有端口全封了),然后登陸host3了~~~
怎么樣?咦,感覺這個功能在哪兒見過啊~這個東西我在哪兒見過。沒錯,花生殼代理!這就是不同實現(xiàn)啦!
下班回家~~~偶們也可以在家工作了~~~
等等…
既然大家這么嗨,我再給大家說一個應(yīng)用場景,出過差的蟈蟈,有沒有遇到這樣的情況:當(dāng)某個功能或者東西你不熟悉時,你需要求助于相關(guān)同事,而客戶的服務(wù)器又不讓遠程登陸,這個同事在遙遠的天邊。。。咋辦呢,讓丫飛過來?估計老板不讓。哈,我有QQ協(xié)助~~~
哈~你真2,QQ遠程協(xié)助也是人用的么?延遲得想讓人發(fā)瘋~
有辦法的~
帶上你的筆記本電腦(host1),去客戶的機房,一根網(wǎng)線接入客戶的服務(wù)器(host2),wifi連接上外網(wǎng),找一臺臨時的外網(wǎng)服務(wù)器(host3),操作如下:
在host3上面執(zhí)行如下命令:
# ssh -CNfg -L 8022:127.0.0.1:8021 root@127.0.0.1
輸入host3的root密碼
在host1上面執(zhí)行如下命令:
# ssh -CNfg -R 8021:host2:22 root@host3
輸入host3的root密碼
然后讓同事丫的趕緊連接host3:8022客戶服務(wù)器,給客戶解決問題?。?!
相關(guān)文章
將 PFX,JKS 證書轉(zhuǎn)換為 PEM 格式方法
這篇文章主要介紹了將 PFX,JKS 證書轉(zhuǎn)換為 PEM 格式方法,需要的朋友可以參考下2024-01-01
Tornado Web服務(wù)器中處理空白字符的解決方案
這篇文章主要介紹了Tornado Web服務(wù)器中處理空白字符的解決方案,本文通過修改Tornado源碼解決這個問題,需要的朋友可以參考下2015-01-01
阿里云ECS服務(wù)器輕松搭建ThinkPHP環(huán)境
本文指導(dǎo)在阿里云ECS?CentOS?7.9上部署ThinkPHP框架,涉及安裝PHP、Composer、Apache,配置虛擬主機解決URL問題及目錄權(quán)限設(shè)置,確保項目正常運行,感興趣的朋友跟隨小編一起看看吧2025-08-08
Nodejs創(chuàng)建TCP服務(wù)器 - king0222
這篇文章主要介紹了Nodejs創(chuàng)建TCP服務(wù)器 - king0222的相關(guān)資料,需要的朋友可以參考下2015-09-09
iisapp.vbs iis pid了解對應(yīng)的網(wǎng)站或應(yīng)用池
有時候突然發(fā)現(xiàn)某個w3wp.exe進程,占用較大的自由,想看看是哪個網(wǎng)站,然后再解決問題。下面是具體的方法。2009-10-10

