????????我們都知道在VScode上通過SSH插件的方式可以遠程連接到虛擬機的Ubuntu系統,這樣開發者就可以在Windows下的Vscode編譯器下直接遠程連接Ubuntu,這種方式是 “用 Windows 的便捷性操作 Linux 的專業性”—— 既保留了Windows系統的易用性和VS Code的強大功能,又能充分利用 Ubuntu(Linux)在開發、部署場景中的優勢,是跨系統開發的高效解決方案。
????????常規的使用SSH Remote插件遠程連接Ubuntu使用密鑰認證的方式,從使用便捷性來說,每次登錄都需手動輸入密碼,無法完全自動化;如果存在多臺服務器,每臺服務器需單獨設置并記憶密碼,管理成本高;從安全性的角度來考慮,如果采用弱密碼,每次登錄需要輸入,存在被截獲并破解的可能;而且如果生產過程中需要通過腳本完成定時的自動化任務,通過SSH密鑰對的方式無需進行交互登錄,畢竟腳本無法自動輸入密碼。
說人話就是每次重新連接不需要我們手動輸入密碼,爽~
那這種又安全又高效又支持自動化的連接方式是如何實現的呢?
一、 準備工作
1. 確保 Ubuntu 虛擬機已安裝 SSH 服務
在 Ubuntu 虛擬機中打開終端,執行以下命令安裝并啟動 SSH 服務:
# 安裝 OpenSSH 服務器
sudo apt update
sudo apt install openssh-server# 啟動 SSH 服務
sudo service ssh start# 設置開機自啟
sudo systemctl enable ssh
我這里已經安裝過openssh-server了,所以我這里顯示“openssh-server is already the newest version (1:8.2p1-4ubuntu0.13).”
2. 查看ubuntu的IP地址
為了方便使用,虛擬機最好是設置為橋接模式而非NAT模式。如果不知道自己是什么模式可以通過查看ubuntu網卡的IP地址與主機的IP地址是否在同一網段來進行簡單的判斷。
橋接模式只需要保證SSH默認端口22開放,主機即可直接通過虛擬機 IP 連接;而NAT模式需額外配置端口轉發才能實現 SSH 連接。
橋接模式 | NAT 模式 | |
---|---|---|
IP 網段 | 與主機同網段(如?192.168.x.x ) | 私有網段(如?10.0.2.x ),與主機隔離 |
SSH 連接方式 | 直接通過虛擬機 IP 連接(ssh user@虛擬機IP ) | 需端口轉發,通過?主機IP:映射端口 ?連接(如?ssh user@主機IP -p 2222 ) |
網絡可達性 | 主機、局域網設備均可直接訪問 | 僅主機可通過端口轉發訪問,局域網其他設備默認不可達 |
IP 穩定性 | 可能隨路由器 DHCP 動態變化(建議設靜態 IP) | 由虛擬機軟件分配,穩定性高(除非重啟 NAT 服務) |
配置復雜度 | 簡單(無需額外設置,確保防火墻開放 22 端口) | 需手動配置端口轉發規則,否則無法連接 |
在命令行終端輸入:
#查看網絡接口狀態
ifconfig
即可查看到ubuntu的網卡對應的IP地址信息:
3.在Windows上的VScode插件市場中安裝SSH插件
在插件市場中搜索關鍵字SSH,跳出來的第一個插件就是我們需要的Remote SSH插件,我這里已經安裝過了,沒有安裝該插件的右下角應該是"Install"按鈕。
二、確保網絡連接狀態
最簡單的測試網絡連接狀態的方式就是互相ping一下,在第一步中我們已經拿到了Ubuntu的IP地址,類似的我們可以得到Windows的IP地址。
在Windows下使用快捷鍵Ctrl+x,選擇"終端管理員"即可打開Windows下的命令行工具PowerShell
我們在命令行中輸入ipconfig即可查詢到本機的IP地址。(Windows下的查詢命令需要與ubuntu下的ifconfig做區分)
#查看網絡接口狀態(Windows)
ipconfig
拿到ip地址后,我們可以在兩端分別ping一下,看是否能ping通
這樣就說明我們網絡連接沒問題了,這也是我們所有ssh遠程連接的基礎。
三、 在配置SSH連接(通過SSH密鑰對)
1. 生成SSH密鑰對
??在 Windows PowerShell 中執行:
ssh-keygen -t rsa -b 4096
??按提示連續回車,默認將密鑰對生成在?C:\Users\你的用戶名\.ssh\id_rsa
?和?id_rsa.pub
。
我這里已經生成過SSH密鑰了,所以會提示是否需要覆蓋。
接下來是將生成的密鑰通過ssh發送至遠程服務器的?~/.ssh/authorized_keys
?文件下,我們在PowerShell中輸入命令:
# 讀取本地公鑰內容
$publicKey = Get-Content "$env:USERPROFILE\.ssh\id_rsa.pub"# 使用 SSH 將公鑰追加到遠程服務器
ssh 用戶名@ubuntu ip地址 "mkdir -p ~/.ssh && chmod 700 ~/.ssh && echo '$publicKey' >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"
第一次通過SSH發送會需要我們輸入ubuntu的密碼。(因為我們SSH密鑰對還沒配置好)
四、 配置VScode的SSH連接
打開Windows下的VScode,使用快捷鍵Ctrl+Shift+P打開上面的搜索框,輸入SSH,選擇
"Open SSH Configuration File"->第一個配置文件
可以參照我的配置文件,將對應項修改為自己的服務器配置即可。
Host 10.55.131.104 # 定義一個名為"10.55.131.104"的主機別名(可自定義,建議用 IP 或域名)HostName 10.55.131.104 # 指定實際連接的遠程服務器 IP 地址或域名User kevin # 連接時使用的用戶名(遠程服務器的登錄賬號)Port 22 # 遠程服務器 SSH 服務監聽的端口(默認 22)IdentityFile ~/.ssh/id_rsa # 指定用于身份驗證的私鑰文件路徑(SSH 密鑰認證)
點擊刷新就會出現我們文件所配置的SSH服務了。
后續我們想要通過SSH遠程連接ubuntu服務器可以直接點擊箭頭,就會自動連接上服務器,而不需要我們輸入密碼了!