VS Code通過ssh免密登錄遠(yuǎn)程服務(wù)器的步驟如下:1. 本地生成SSH密鑰對(duì),使用ssh-keygen -t ed25519命令創(chuàng)建私鑰和公鑰文件;2. 將公鑰部署到遠(yuǎn)程服務(wù)器,可通過ssh-copy-id user@remote_host命令或手動(dòng)復(fù)制公鑰內(nèi)容至~/.ssh/authorized_keys文件;3. 配置VS Code的SSH連接,在~/.ssh/conf
在使用VS Code的Remote – SSH擴(kuò)展進(jìn)行遠(yuǎn)程開發(fā)時(shí),每次連接都輸入密碼會(huì)降低工作效率。配置SSH免密登錄,可以讓你一鍵直連遠(yuǎn)程服務(wù)器,極大提升開發(fā)體驗(yàn)與連接的安全性。
免密登錄的核心原理
SSH免密登錄的實(shí)現(xiàn)依賴于一種名為“公鑰/私鑰”的非對(duì)稱加密技術(shù)。簡(jiǎn)單來說,你會(huì)在你的本地計(jì)算機(jī)上創(chuàng)建一對(duì)密鑰:一個(gè)私鑰和一個(gè)公鑰。私鑰由你個(gè)人妥善保管,絕不外泄。公鑰則可以放心地存放在任何你希望訪問的遠(yuǎn)程服務(wù)器上。當(dāng)你嘗試連接時(shí),服務(wù)器會(huì)使用它持有的公鑰向你發(fā)出一個(gè)“挑戰(zhàn)”,只有持有對(duì)應(yīng)私鑰的你的計(jì)算機(jī)才能正確回應(yīng)這個(gè)“挑戰(zhàn)”,從而證明你的身份,服務(wù)器隨即允許登錄,全程無需密碼參與。
具體設(shè)置步驟
第一步:在本地計(jì)算機(jī)生成SSH密鑰對(duì)
在你的本地計(jì)算機(jī)(windows下的PowerShell、WSL,或者macos、linux的終端)中執(zhí)行命令來生成密鑰文件。推薦使用安全性更高的`ed25519`算法。
ssh-keygen -t ed25519
執(zhí)行過程中,系統(tǒng)會(huì)詢問你密鑰的保存位置和是否設(shè)置密碼短語(passphrase)。直接按回車鍵即可接受默認(rèn)路徑(通常是 `~/.ssh/id_ed25519`),并跳過密碼短語的設(shè)置,這樣才能實(shí)現(xiàn)完全的免密登錄。操作完成后,在你的 `~/.ssh` 目錄下會(huì)生成兩個(gè)文件:`id_ed25519`(私鑰)和 `id_ed25519.pub`(公鑰)。
第二步:將公鑰部署到遠(yuǎn)程服務(wù)器
這一步的目的是讓遠(yuǎn)程服務(wù)器“認(rèn)識(shí)”你的公鑰。你有兩種主流方式來完成它。
方法一:使用 ssh-copy-id (推薦)
這是一個(gè)非常便捷的命令,它會(huì)自動(dòng)完成公鑰的復(fù)制和服務(wù)器端文件權(quán)限的設(shè)置。將 `user` 和 `remote_host` 替換成你服務(wù)器的用戶名和IP地址/域名。
ssh-copy-id user@remote_host
系統(tǒng)會(huì)提示你輸入一次服務(wù)器的密碼,這是為了授權(quán)本次公鑰寫入操作。操作完成后,免密配置就基本生效了。
方法二:手動(dòng)復(fù)制公鑰
當(dāng)本地環(huán)境沒有 `ssh-copy-id` 命令時(shí),可以手動(dòng)操作。
- 在本地計(jì)算機(jī)上,查看并復(fù)制公鑰文件的全部?jī)?nèi)容。
- 通過密碼登錄到你的遠(yuǎn)程服務(wù)器。
- 將剛剛復(fù)制的公鑰字符串,追加到服務(wù)器用戶主目錄下的 `~/.ssh/authorized_keys` 文件中。假如目錄或文件不存在,需要手動(dòng)創(chuàng)建。
- 為保證安全,修正服務(wù)器上相關(guān)目錄和文件的權(quán)限。
- 在VS Code中,使用快捷鍵 `F1` 或 `Ctrl+Shift+P` 打開命令面板,輸入 `Remote-SSH: Open SSH Configuration File…`。
- 選擇你常用的配置文件,通常是位于 `~/.ssh/config` 的那一個(gè)。
- 在打開的 `config` 文件中,為你的服務(wù)器添加一個(gè)配置塊,像這樣:
- 打開本地終端,直接使用剛才設(shè)置的別名進(jìn)行連接。
cat ~/.ssh/id_ed25519.pub
echo "把你復(fù)制的公鑰內(nèi)容粘貼到這里" >> ~/.ssh/authorized_keys
chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys
第三步:配置VS Code的SSH連接
VS Code通過讀取SSH客戶端配置文件來管理連接,配置它可以讓連接過程更加簡(jiǎn)單直觀。
Host my-server-alias HostName 192.168.1.100 User myuser IdentityFile ~/.ssh/id_ed25519
這里的 `Host` 是你自定義的連接別名,方便記憶。`HostName` 是服務(wù)器的真實(shí)IP或域名。`User` 是登錄用戶名。`IdentityFile` 則明確指定了本次連接所使用的私鑰文件路徑。
第四步:連接測(cè)試
在所有配置完成后,進(jìn)行連接測(cè)試。
ssh my-server-alias
假如能夠直接登錄而沒有提示輸入密碼,說明你的免密設(shè)置已經(jīng)成功。
現(xiàn)在,回到VS Code的“遠(yuǎn)程資源管理器”側(cè)邊欄,你應(yīng)該能在SSH目標(biāo)列表中看到 `my-server-alias` 這個(gè)條目。點(diǎn)擊它旁邊的連接按鈕,就可以順暢地進(jìn)入遠(yuǎn)程開發(fā)環(huán)境,開始你的編碼工作了。