昨天我們成功打通了 Windows 與 Ubuntu 之間的橋樑,用本機 VS Code 透過 Remote-SSH 直接連進虛擬機寫程式。
但在實際開發中,你很快會遇到一個惱人的問題
每次新開工作區、重新載入視窗、甚至網路稍微斷線重連,VS Code 上方就會立刻跳出輸入框要你輸入密碼。
頻繁輸入密碼不僅降低工作效率,在安全性上也容易面臨字風險。今天我們要完成兩項設定:
1.設定 SSH Key(非對稱金鑰認證):讓系統能點擊就能馬上連線,同時享有比純文字密碼更高的安全強度。
2.啟用「以非 GUI 啟動」:既然所有開發操作都移到了 VS Code,虛擬機的圖形視窗就可以功成身退,為電腦省下寶貴的記憶體與 GPU 資源。
1.為什麼要用金鑰認證?
傳統密碼認證就像拿一般鑰匙開鎖,只要密碼被側錄或暴力猜中,系統就直接門戶大開。
SSH 金鑰採用非對稱加密技術,由成對的「公鑰」與「私鑰」組成:
2.產生金鑰並配置到 Ubuntu
步驟 1:在 Windows 主機產生 Ed25519 金鑰對
在 Windows 實體主機按下 Win + R 輸入 cmd 打開命令提示字元,執行以下指令
ssh-keygen -t ed25519
1.儲存路徑:提示 Enter file in which to save the key,直接按Enter使用預設路徑。
2.設定密碼詞: 提示 Enter passphrase,為了達到完全免敲密碼的流暢度,直接按兩次 Enter 跳過。
步驟 2:將公鑰複製到 Ubuntu 虛擬機中
在同一個 Windows CMD 視窗中,執行以下指令,透過 SSH 自動將公鑰寫入 Ubuntu 的受信任名單中
type %USERPROFILE%\.ssh\id_ed25519.pub | ssh -p 2222 ithome@127.0.0.1 "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"
(請將 ithome 換成你自己的 Ubuntu 帳號名稱)
步驟 3:在 Windows 驗證免密碼連線
在 Windows CMD 中直接輸入:
ssh -p 2222 ithome@127.0.0.1
(請將 ithome 換成你自己的 Ubuntu 帳號名稱)
如果不需要輸入任何密碼,直接在跳出 ithome@ithome-VirtualBox:~$,代表金鑰認證已完成。
3.在 VS Code 設定檔綁定金鑰
回到實體主機的 VS Code,按下 F1 ➔ 輸入 Remote-SSH: Open SSH Configuration File... 打開剛才的 config 檔案。
加入一行 IdentityFile 指向你的私鑰路徑:
Host vb-ubuntu
HostName 127.0.0.1
User ithome
Port 2222
IdentityFile ~/.ssh/id_ed25519
按下 Ctrl + S 存檔。現在關閉 VS Code 重新點擊連線,你會發現視窗一跳出來就自動連上,不需要動手輸入任何密碼!
4.啟用「以非 GUI 啟動」
既然已經不需要碰虛擬機的畫面,每次都要看著 VirtualBox 彈出一個視窗純粹是浪費電腦記憶體與 GPU 資源。
什麼是非 GUI 啟動?
讓 VirtualBox 在 Windows 背景以服務(Service)形式執行虛擬機,不渲染任何 GUI 視窗。
操作方式:
(1)先將目前的 Ubuntu 正常關機。
(2)打開 VirtualBox 主畫面,選取你的 Ubuntu 虛擬機。
(3)點擊上方綠色「啟動」按鈕右邊的下拉倒三角形 ▾。
(4)點選 「以非 GUI 啟動」。
點選後,虛擬機的狀態會直接變成「正在執行」,但桌面上完全不會有任何視窗跳出來干擾。此時打開 VS Code 點擊連線,就能在背景安靜運作的狀態下連入開發環境。
|明日目標:進入環境個人化配置。我們將於虛擬機安裝 Zsh 與 Oh My Zsh 框架,並配置語法高亮及自動建議插件,提升終端機操作效率。|