VSCode 远程开发:WLS 2 + ZeroTier 内网穿透
前置條件
兩臺(tái)設(shè)備均開(kāi)啟 OpenSSH 服務(wù)
設(shè)置遠(yuǎn)程機(jī)上的 WSL 2
設(shè)置僅當(dāng) Win 10 被遠(yuǎn)程訪問(wèn)時(shí),默認(rèn)的 CMD 自動(dòng)變?yōu)?PowerShell,以便直接進(jìn)入 WSL 2。
在 PowerShell 中輸入以下命令(將命令中的 PowerShell 地址換成自己機(jī)子上的地址)。
New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value "C:\WINDOWS\system32\WindowsPowerShell\v1.0\powershell.exe" -PropertyType String -Force兩臺(tái)設(shè)備均配置 ZeroTier(內(nèi)網(wǎng)穿透)
免費(fèi)渠道考慮過(guò)花生殼,但無(wú)奈對(duì)個(gè)人用戶性價(jià)比不高,最后選擇 ZeroTier。ZeroTier 可以創(chuàng)建一個(gè)虛擬局域網(wǎng),實(shí)現(xiàn)多臺(tái)機(jī)器的互訪,缺點(diǎn)是任何需要遠(yuǎn)程訪問(wèn)的機(jī)器都需要安裝他的客戶端。
在本地機(jī)測(cè)試訪問(wèn)遠(yuǎn)程機(jī)
本地機(jī) VSCode 安裝 Remote -SSH 擴(kuò)展;
安裝后點(diǎn)擊 VSCode 左下角圖標(biāo) ><,在彈出的命令面板中選擇 Open SSH Configuration File...;
選擇 User 目錄下的 config 文件;
在文件中輸入以下內(nèi)容
Host remote_wsl # 名稱(chēng)(可自定)HostName ******** # ZeroTier 分配的**遠(yuǎn)程機(jī)**的 IP 地址User *** # Windows 系統(tǒng)的用戶名Port 22 # WSL 2 填寫(xiě) 22 端口保存配置后,再次點(diǎn)擊 VSCode 左下角圖標(biāo) ><,在彈出的命令面板中選擇 Connect to Host...,選擇剛剛配置好的 remote_wsl。如果 VS Code 未能判斷遠(yuǎn)程服務(wù)器類(lèi)型,則會(huì)要求我們自己手動(dòng)選擇類(lèi)型(這里選擇 Windows),輸入密碼登錄成功后(首次登陸可能會(huì)提示是否加入 known_hosts,yes 即可),就可以愉快的編輯代碼了。
免密登錄(可選)
在本地機(jī)生成公鑰,在 cmd 或 powershell 中輸入 ssh-keygen -t rsa 命令:
進(jìn)入 C:\Users\用戶名\.ssh (以自己配置的為準(zhǔn))找到公鑰文件 id_rsa.pub,并復(fù)制全部文本內(nèi)容。
進(jìn)入遠(yuǎn)程機(jī)的 C:\Users\用戶名\.ssh 文件夾,創(chuàng)建文件 authorized_keys(注意:文件無(wú)后綴名),將復(fù)制的公鑰粘貼進(jìn)去并保存(如果已有該文件,直接在文件內(nèi)追加該內(nèi)容)。
打開(kāi)遠(yuǎn)程機(jī) C:\ProgramData\ssh\ 文件夾下的 sshd_config 文件,修改以下內(nèi)容(重點(diǎn)),如果保存時(shí)提示沒(méi)有權(quán)限,可以用管理員身份打開(kāi)cmd,用 notepad C:\ProgramData\ssh\sshd_config 命令打開(kāi)文件編輯即可。
-
確保以下 3 條沒(méi)有被注釋
PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys PasswordAuthentication yesPasswordAuthentication:改成 yes 或者 no 都無(wú)所謂。如果證書(shū)通過(guò)了,就不會(huì)觸發(fā) password 驗(yàn)證。如果證書(shū)沒(méi)過(guò),就提示 password 登錄。
-
確保以下 2 條有注釋掉
#Match Group administrators # AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys
重啟遠(yuǎn)程機(jī) sshd 服務(wù):在服務(wù)中找到 OpenSSH SSH Server,重啟即可。
在本地機(jī) ssh 配置 C:\Users\用戶名\.ssh\config 文件中補(bǔ)充私鑰地址 IdentityFile:
Host remote_wsl # 名稱(chēng)(可自定)HostName ******** # ZeroTier 分配的**遠(yuǎn)程機(jī)**的 IP 地址User *** # Windows 系統(tǒng)的用戶名Port 22 # WSL 2 填寫(xiě) 22 端口IdentityFile C:\Users\UserName\.ssh\id_rsa # 私鑰地址再次嘗試用 VSCode 連接或者在本地機(jī)用 ssh 遠(yuǎn)程機(jī)登錄用戶名@遠(yuǎn)程機(jī)IP 命令(如 ssh Administrator@192.168.123.1)測(cè)試連接,此時(shí)不再提示輸入密碼。
遇到的問(wèn)題
ssh: connect to host 遠(yuǎn)程機(jī) IP port 22: Connection timed out
ZeroTier 連接不穩(wěn)定,可以嘗試其他內(nèi)網(wǎng)穿透方案,或者購(gòu)買(mǎi)穩(wěn)定方案。
VSCode SSH 連接提示:過(guò)程試圖寫(xiě)入的管道不存在
內(nèi)網(wǎng)穿透不穩(wěn)定也會(huì)引發(fā)此問(wèn)題,如果排除是網(wǎng)絡(luò)問(wèn)題,可嘗試將本地機(jī)的 C:\Users\用戶名\.ssh\known_hosts 文件中關(guān)于遠(yuǎn)程機(jī)的所有信息刪除,然后保存重新嘗試。
參考
VS Code+內(nèi)網(wǎng)穿透 | 遠(yuǎn)程 WSL 開(kāi)發(fā)解決方案
VSCode 遠(yuǎn)程開(kāi)發(fā) - Windows
多臺(tái)WIN10之間的SSH免密登錄
總結(jié)
以上是生活随笔為你收集整理的VSCode 远程开发:WLS 2 + ZeroTier 内网穿透的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Unix网络编程学习笔记之第11章 名字
- 下一篇: Window平台Git-Bash的主题配