在今天這個雲端計算盛行的時代,SSH(Secure Shell)幾乎成了每個開發者必備技能之一。SSH 不僅可以讓我們安全地遠程登錄到伺服器,執行操作,還支援如檔案傳輸、埠轉發等高階功能。
本文將用淺顯易懂的語言,帶你深入瞭解 SSH 的兩個常用功能:使用金鑰登入和透過 SSH 實現埠轉發。
使用金鑰登入
傳統上,我們習慣使用使用者名稱和密碼進行 SSH 登入。但在安全性要求更高的環境下,使用金鑰登入是更推薦的選擇。
首先,我們需要在客戶端生成一對金鑰(一個公開的「公鑰」和一個私有的「私鑰」)。接下來,將公鑰配置到伺服器上,然後利用客戶端的私鑰進行認證登入。這樣,即使有人知道了我們的伺服器 IP 和使用者,沒有私鑰也無法登入。
首次設定和登入
生成金鑰對 (如果已有金鑰對可跳過此步驟)。
開啟終端執行:
ssh-keygen
登入到你的伺服器 ,並將公鑰內容新增到
~/.ssh/authorized_keys
中。使用金鑰登入:
ssh root@{你的伺服器公網 IP} -i ~/.ssh/<your-pem-name>.pem
這裏的 -i
引數用於指定私鑰檔案的路徑。
為簡化登入過程,我們可以編輯 ssh 配置檔案:
在客戶端編輯 vim ~/.ssh/config
檔案:
# PubkeyAuthentication yes 代表使用金鑰方式登入 # IdentityFile 用於指定金鑰檔案路徑 Host {你的雲伺服器公網 IP} PubkeySerialization yes IdentificationFile ~/.ssh/<your-pem-name>.pem
配置後,直接使用下面的命令登入:
ssh root@{你的雲伺服器公網 IP}
透過 SSH 實現埠轉發
在進行資料分析、Web 開發等場景時,我們經常需要將遠端伺服器上的服務埠對映到本地埠,以便本地訪問。SSH 的埠轉發功能讓這一需求得以簡單實現。
埠轉發的基本用法
假設你想要訪問位於 192.168.0.101
伺服器上的 9200
埠的服務,可以透過 SSH 將該埠對映到本地機器的 9201
埠上:
ssh -L -N 9201:0.0.0.0:9200 alex@192.168.0.101
這裏的 -L
引數指定了本地埠轉發,-N
參數列示不執行遠端命令。
埠轉發的高階用法
如果 SSH 服務的預設埠 22
被更改了,比如改爲了 2202
,你可以透過 -p
引數指定 SSH 連線的埠:
ssh -L -N 9201:0.0.0.0:9200 -p 2202 alex@192.168.0.101
埠轉發的應用場景
埠轉發可以用於多種場景,比如:
訪問位於內網中的資料庫或 Web 服務。
繞過防火牆訪問某些服務。
為遠端服務提供一個安全的本地訪問點。
透過上面的分享,相信你已經對 SSH 的金鑰登入和埠轉發功能有了初步的瞭解。這兩個功能在日常開發中非常有用,掌握它們將大大提高你的工作效率。