概述
vscode 支持遠(yuǎn)程開發(fā),也就是源代碼在遠(yuǎn)程服務(wù)器上,開發(fā)者在本地進(jìn)行開發(fā)調(diào)試,遠(yuǎn)程服務(wù)器可以是 linux,而本地可以使用 windows 環(huán)境,圖示如下

請注意:本地是沒有代碼的
這樣的方便性毋庸置疑
- 不會因?yàn)殚_發(fā)和生產(chǎn)環(huán)境不一致導(dǎo)致各種奇怪的問題,比如依賴庫找不到,路徑問題等等
- 使用多臺電腦開發(fā)時,不需要在各個電腦之間保持代碼的同步
更吸引人的是,搭建 vscode 的遠(yuǎn)程開發(fā)環(huán)境是非常簡單的,就以下幾個步驟
- 配置遠(yuǎn)程環(huán)境的登錄驗(yàn)證,本文以 SSH 密鑰登錄為例介紹,最多執(zhí)行 4 條命令即可完成配置
- vscode 安裝遠(yuǎn)程登錄擴(kuò)展
- 將 vscode 連接到遠(yuǎn)程環(huán)境
- 為遠(yuǎn)程環(huán)境安裝相應(yīng)開發(fā)語言的擴(kuò)展
- 和本地一樣進(jìn)行開發(fā)調(diào)試
環(huán)境說明
- 本地環(huán)境:windows 10
- 遠(yuǎn)程環(huán)境:運(yùn)行在 VirtualBox 里的 Linux 虛擬機(jī)
- OS 版本:centos Linux release 8.2.2004 (Core)
- 用戶賬號:root
為了方便,編輯本地的 hosts 文件,為遠(yuǎn)程服務(wù)器設(shè)置域名為 virtualbox
127.0.0.1 virtualbox
SSH 密鑰驗(yàn)證
從 windows 遠(yuǎn)程登錄到 Linux,一般都是采用 SSH,客戶端可以選用 putty,XShell 等工具。vscode 也支持 SSH 登錄到遠(yuǎn)程服務(wù)器上,需先配置 SSH 密鑰登錄
注意:如果你的 windows 未安裝兼容 OpenSSH 的客戶端(putty 不兼容 OpenSSH),請先 安裝 OpenSSH(https://docs.microsoft.com/zh-cn/windows-server/administration/openssh/openssh_install_firstuse)
打開 windows 10 的 powershell(請勿使用 cmd,必須使用 powershell),執(zhí)行如下命令,創(chuàng)建密鑰
ssh-keygen -t rsa -b 4096
注意:如果你以前用 ssh-keygen 創(chuàng)建過密鑰,那么這一步可以跳過。
如果不確定是否曾經(jīng)創(chuàng)建過密鑰,可以輸入以下指令查看
ls $HOME/.ssh
如果目錄不存在則可以放心創(chuàng)建密鑰,如果列出了如下文件,則說明密鑰已經(jīng)存在
id_rsa
id_rsa.pub
密鑰創(chuàng)建后,執(zhí)行以下命令即可完成 SSH 密鑰登錄的配置
# 帳號@ip(或域名)
$USER_AT_HOST="root@virtualbox"
# 指定公鑰位置
$PUBKEYPATH="$HOME.sshid_rsa.pub"
$pubKey=(Get-Content "$PUBKEYPATH" | Out-String); ssh "$USER_AT_HOST" "mkdir -p ~/.ssh && chmod 700 ~/.ssh && echo '${pubKey}' >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"
執(zhí)行到第三條命令,會出現(xiàn)交互提示
The authenticity of host 'virtualbox (127.0.0.1)' can't be established.
ECDSA key fingerprint is SHA256:R7+lcN8z/RBrH0i3OMUvfZtEt4lxdbGQrEV/ydcq8Vc.
Are you sure you want to continue connecting (yes/no)?
輸入 yes 繼續(xù),接下來會要求輸入登錄密碼
Warning: Permanently added 'virtualbox' (ECDSA) to the list of known hosts.
root@virtualbox's password:
輸入 root 用戶 在 virtualbox 服務(wù)器上的密碼完成設(shè)置
此時使用密鑰登錄已完成配置,輸入如下命令即可連接到遠(yuǎn)程服務(wù)器
ssh root@virtualbox
可以看到命令提示符已經(jīng)是遠(yuǎn)程服務(wù)器的啦
Last login: Wed Dec 16 01:51:17 2020 from 10.0.2.2
[root@localhost ~]#
vscode 安裝遠(yuǎn)程擴(kuò)展
在 vscode 里搜索 remote-ssh,點(diǎn)擊安裝即可

使用 vscode 連接到遠(yuǎn)程服務(wù)器
remote-ssh 擴(kuò)展安裝完成后,可以看到 vscode 左邊欄增加了 Remote Explorer 按鈕,

狀態(tài)欄增加了 Open a Remote Window 按鈕

點(diǎn)擊 Open a Remote Window 按鈕,會打開命令面板,并顯示常用的 remote-ssh 命令,如圖

選擇 Remote-SSH: Connect to Host... 并輸入 root@virtualbox 來連接到遠(yuǎn)程服務(wù)器

此時 vscode 會打開一個新窗口,連接遠(yuǎn)程服務(wù)器,并且界面上方的命令面板會有遠(yuǎn)程服務(wù)器的平臺選項(xiàng),分別是
- Linux
- Windows
- macOS
選擇 Linux 即可,如果不選擇的話,vscode 在等待一段時間后會提示連接失敗,如下圖

如果看到這個連接失敗的界面,也不要慌,Retry 并在命令面板選擇 Linux 即可;連接成功后,可以看到狀態(tài)欄圖標(biāo)上顯示的主機(jī)名

編寫程序
我們用 Python 寫個 hello world 吧
- 點(diǎn)擊 File 菜單,選擇 Open Folder...,打開 /data/python 目錄,如果目錄不存在請先創(chuàng)建
- 新建一個 test.py 的文件
- 輸入代碼
如圖

這時會發(fā)現(xiàn)找不到運(yùn)行的按鈕,這是因?yàn)榉?wù)器上沒有安裝 python 擴(kuò)展,我們打開擴(kuò)展視圖

可以看到遠(yuǎn)程服務(wù)器上沒有安裝任何擴(kuò)展,點(diǎn)擊 Install in SSH: virtualbox 安裝 python 擴(kuò)展到服務(wù)器上,安裝完成后,右下角會彈出對話框,要求選擇 python 解釋器

指定 python 安裝路徑后,還會彈出一些安裝 python 擴(kuò)展的對話框,全部完成后,就可以運(yùn)行 hello world 了

斷開遠(yuǎn)程連接
如果要斷開遠(yuǎn)程服務(wù)器,可以從 File 菜單選擇 Close Remote Connection,否則的話下次打開 vscode 會自動連接到遠(yuǎn)程服務(wù)器

保存遠(yuǎn)程服務(wù)器信息
也許有的同學(xué)需要在多個不同的遠(yuǎn)程服務(wù)器上進(jìn)行開發(fā),可以通過遠(yuǎn)程瀏覽器來管理這些服務(wù)器
點(diǎn)擊左邊欄的 Remote Explorer 按鈕,打開遠(yuǎn)程瀏覽器,點(diǎn)擊 SSH TARGETS 視圖右側(cè)的加號,添加服務(wù)器

在彈出的對話框里輸入 root@virtualbox,并在隨后的對話框里指定配置文件,即可完成遠(yuǎn)程服務(wù)器的保存,此時 SSH TARGETS 視圖會出現(xiàn)該服務(wù)器

可以很方便的通過該視圖連接到遠(yuǎn)程服務(wù)器