服务端开发——云服务器的端口转发设置(SSH隧道)
引言
本篇博客介紹端口轉發的知識,并詳細闡述操作和設置步驟。這是因為在實際工作中,會有很多企業從安全的角度考慮,為線上或重要的服務器設置一個跳板機(堡壘機),避免遠程開發人員直接操作,是企業應用開發中的重要保護措施。
一、端口轉發
端口轉發(Port Forwarding),或者叫SSH隧道(SSH Tunnel),是運維人員相關操作的必修課,也是開發人員必須要了解的知識。以下引用百科中的一段概述:
端口轉發是SSH 為網絡安全通信使用的一種方法。是把一個網絡端口從一個網絡節點轉發到另一個網絡節點上的行為。這種行為使得一個外部用戶從外部經過一個被激活的NAT路由器到達一個在局域網中的IP的端口上。
用網絡拓撲圖來解釋就是這樣:
可見上圖中的虛線連接了本地服務器與遠程服務器,但這條虛線實際上是通過端口轉發實現的,實際傳輸的數據都是通過跳板機來進行傳輸的。
二、端口轉發的設置
2.1 場景描述
開發人員配置端口轉發的目的一般就是需要登錄遠程的受跳板機(堡壘機)保護的目標服務器,服務器上可能有項目的部署文件,或者是數據庫。
我們來假設一種典型的場景:
我們的數據庫是在一個受保護的遠程服務器上啟動的,本地代碼的運行也需要依賴此數據庫的查詢。我們不僅要通過Navicat等可視化界面連接數據庫,更要通過程序進行數據庫的連接和訪問。因此,我們通過端口轉發來實現這個要求。
2.2 小知識
1、通過免費的終端軟件,可以實現端口轉發的設置。所有的終端操作軟件都支持端口轉發功能,它們有XShell、SecureCRT、MobaxTerm(強烈推薦) 等等。
2、端口轉發只需要一次設置,終端軟件可以保存并管理這些端口轉發的配置。
3、一般來說,端口轉發是將本地(127.0.0.1)上的任意一個端口轉發到目標服務器上的指定端口。為什么是“一般來說”,這是針對開發人員訪問遠程服務器來說的,因為端口轉發不僅僅局限于本地的端口轉發,端口轉發的定義是“從一個網絡節點到另一個網絡節點”。
4、根據端口轉發的原理,實際上是開啟一個127.0.0.1 : port ——> 目標主機IP :port 的一個SSH Tunnel(隧道),這個隧道需要一直開啟(即終端框不能關閉),一旦隧道關閉(終端關閉),端口轉發功能也會立即失效。
5、端口轉發是服務器和網絡層面的概念,與具體的終端軟件無關,它們只是負責修改和保存了一些通信上的配置,換句話說,終端軟件配置好端口轉發后,只需要最小化即可,其他所有應用都可以使用配置好的端口轉發隧道。
2.3 MobaxTerm實現端口轉發配置
如果使用SecureCRT實現端口轉發功能,可以參考這篇文章《使用SecureCRT進行端口轉發》,相信你會有所體會。
因為我一直使用MobaxTerm來操作遠程Linux 服務器,所以個人覺得這款軟件比較好用,它有免費版(社區版)和商用版兩種,日常開發的話,我一直用免費版,完全沒有障礙。
下載地址:https://mobaxterm.mobatek.net/download.html
打開MobaxTerm,在上方工具欄中找到Tunneling:
打開后,我們可以看到一個設置界面,然后點擊“New SSH tunnel” 按鈕,出現如下設置界面:
上圖中每個輸入框的描述信息一定要仔細閱讀,對于理解端口轉發有好處,最后我們填寫好實際的端口轉發信息,并點擊“Save”按鈕,下圖中,我們可以看到所有我們配置好的端口轉發隧道,一個端口只能轉發到一個遠程的端口(可以不一樣),如果有多個需要轉發的端口,需要配置多個端口轉發隧道:
然后,我們點擊Start 按鈕,就可以打開SSH 通道:
到此為止,已經完成了全部端口轉發的配置并啟動,我們通過SQLyog 來連接遠程服務器看看能否正常連接:
請注意觀察IP 和 端口 的配置信息,這里填入的應該是你本地的 IP 和 被轉發的端口,也就是說,我們實際上只需要像操作本地數據庫一樣即可,只不過操作的端口被轉發到了遠程服務器而已。
可以看到,連接成功!
那么在 程序中配置的 DataSource應該是怎樣的呢?同樣,也應該是本地的 ip 和被轉發的端口:
注意,在進行遠程訪問的過程中,MobaxTerm應該最小化,但不可以關閉!
三、總結
首先,端口轉發的意思就是將一臺服務器上的一個端口映射到一個受跳板機保護的目標服務器的端口上的過程。
這在實際的企業開發中是必備技能。
端口轉發的配置非常簡單,擁有一個趁手的 終端軟件,如MobaxTerm,可以讓配置過程更加事半功倍。博主第一次配置端口轉發的工具是 SecureCRT,后來使用MobaxTerm來進行配置。
推薦MobaxTerm 的理由,我想只要你用過,就知道好在哪里了。不僅界面美觀大氣,科技感十足,在進行端口轉發配置的時候,也感受到了滿滿的人性化:
這么直觀的網絡拓撲圖,我相信大家會有自己的選擇。唯一的缺點就是全英文,如果英文不好的小伙伴還是不建議使用的,不過博主認為除了這一點小障礙以外,總體來說這款終端軟件,完爆其他軟件。
?
?
總結
以上是生活随笔為你收集整理的服务端开发——云服务器的端口转发设置(SSH隧道)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux 实操 —— 日志筛选操作(s
- 下一篇: 谈谈 final、finally、 fi