最新VSC 預(yù)覽發(fā)布了新版本荞怒,其中引入了強(qiáng)大的VSC的遠(yuǎn)程開發(fā)擴(kuò)展耻讽,包括了docker察纯、SSH和WSL,本文蟲蟲來給大家實(shí)例深入介紹下Remote-SSH擴(kuò)展针肥。遠(yuǎn)程開發(fā)擴(kuò)展需要在最新的VSC Insiders版本饼记,本文中我們提到的所有VSC都是在該版本下操作,截止本文撰寫時(shí)候VSC Insiders最新版本為1.33慰枕。
概述
VSC的Remote-SSH擴(kuò)展是VSC 遠(yuǎn)程開發(fā)的三個(gè)自插件之一具则,用于通過SSH協(xié)議鏈接到遠(yuǎn)程的開發(fā)環(huán)境,打開遠(yuǎn)程文件夾具帮,實(shí)現(xiàn)和VSC IDE功能的無縫集成博肋。連接到服務(wù)器后,可以實(shí)現(xiàn)與遠(yuǎn)程服務(wù)器文件系統(tǒng)上的代碼文件和運(yùn)行環(huán)境交互蜂厅。通過該擴(kuò)展VSC實(shí)現(xiàn)在遠(yuǎn)程服務(wù)器運(yùn)行命令和擴(kuò)展匪凡,本地VSC所在計(jì)算機(jī)上無需要源代碼和開發(fā)運(yùn)行環(huán)境,就能實(shí)現(xiàn)和提供本地開發(fā)一樣的體驗(yàn)掘猿,包括完整的IntelliSense(高亮锹雏、補(bǔ)全),代碼導(dǎo)航和斷點(diǎn)調(diào)試等术奖。
安裝部署
Remote-SSH依賴于一下軟件礁遵,要使用該插件必須安裝首先安裝:
安裝依賴插件
VSC Insiders嘗鮮版:即綠色頭標(biāo)的VSC轻绞。VSC真實(shí)版本是藍(lán)色頭標(biāo)的。
兼容OpenSSH的SSH客戶端:需要配置Windows路徑佣耐,不支持Putty政勃。
具體安裝步驟:
MS+X 啟動(dòng)管理員身份啟動(dòng)的命令行,輸入 PowerShell進(jìn)到Powershell界面兼砖。
輸入以下PowerShell命令獲取在線的Openssh
Get-WindowsCapability -Online | ? Name -like 'OpenSSH*'
通過輸入命令安裝OpenSSH客戶端
Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0
安裝遠(yuǎn)程開發(fā)Remote Development擴(kuò)展包奸远。
SSH客戶端配置
如果服務(wù)器需要通過多因素身份驗(yàn)證,比如要用證書登陸讽挟,需要設(shè)置
settings.json的remote.SSH.showLoginTerminal:true啟用ControlMaster SSH功能懒叛。
VSC使用SSH配置文件,并且需要基于SSH密鑰認(rèn)證才能連接到主機(jī)耽梅。具體配置方法如下:
1薛窥、 配置公鑰認(rèn)證,并在遠(yuǎn)程主機(jī)上(本例中的10.0.1.8)添加公鑰到~/.ssh/authorized_keys
2眼姐、 在VSC命令選項(xiàng)板(或者F1)選擇Remote-SSH:Connect to Host,下拉列表選擇Configure SSH Hosts ...诅迷,配置遠(yuǎn)程服務(wù)器信息:HostName,Port众旗,User以及私鑰的文件(和添加到遠(yuǎn)程服務(wù)器的公鑰配對(duì))罢杉。
注意設(shè)置~/.ssh/目錄下config和證書的文件權(quán)限,需要配置給當(dāng)前用戶贡歧,Administrators和 YSTEM全部控制權(quán)限滩租。
2、運(yùn)行VSC命令選項(xiàng)板(或者F1)Remote-SSH:Connect to Host利朵,選擇主機(jī)比如我們上一步奏配置的SEC-test,或者自定義輸入主機(jī)名和用戶(注意這種情況主機(jī)的端口必須為默認(rèn)的22)律想,格式為:user@hostname
3、VSC會(huì)連接到SSH服務(wù)器并自行設(shè)置哗咆。 VSC將使用進(jìn)度條提示連接的信息蜘欲,可以在Remote-SSH 輸出標(biāo)簽頁中查看詳細(xì)日志。
4.連接后晌柬,將進(jìn)入一個(gè)空窗口姥份。我使用可以使用文件>打開,或文件>打開工作區(qū)打開遠(yuǎn)程服務(wù)器上的文件文件夾或工作區(qū)
5.選擇的文件夾或工作區(qū)將會(huì)打開年碘。從"擴(kuò)展"視圖中安裝需要的擴(kuò)展澈歉,比如Python擴(kuò)展。
記住常連主機(jī)
配置過程和上步驟中第二步驟屿衅,在配置文件中重復(fù)建立不同的Host配置項(xiàng)即可,比如我們?cè)僭黾右粋€(gè)數(shù)據(jù)主機(jī):
保存埃难,再此連接時(shí)候就能看到保存這個(gè)主機(jī)SEC-db了。
如果要使用與列出的配置文件不同的配置文件,需要在settings.json中設(shè)置"remote.SSH.configFile"屬性涡尘。
管理擴(kuò)展
VSC擴(kuò)展運(yùn)行在UI/客戶端本地忍弛,或在遠(yuǎn)程主機(jī)上。影響VSC UI的擴(kuò)展(如主題和代碼段)都安裝在本地考抄,但大多數(shù)擴(kuò)展要都要運(yùn)行在遠(yuǎn)程主機(jī)上细疚。這可確保獲得流暢的體驗(yàn),需要通過為SSH主機(jī)上的給定工作區(qū)安裝任何所需的擴(kuò)展川梅。
如果從"擴(kuò)展"視圖安裝擴(kuò)展疯兼,它將自動(dòng)安裝在正確的位置。安裝后贫途,可以根據(jù)類別分組確定擴(kuò)展的安裝位置吧彪。遠(yuǎn)程SSH主機(jī)和本地安裝類別將有一個(gè)類別。
比如下面就是一個(gè)遠(yuǎn)程擴(kuò)展:
默認(rèn)安裝擴(kuò)展程序
如果希望在連接的SSH主機(jī)上是默認(rèn)安裝遠(yuǎn)程擴(kuò)展丢早,可以配置settings.json remote.SSH.extensions屬性指定需要安裝的擴(kuò)展姨裸。例如,如果要安裝GitLens和資源監(jiān)視器擴(kuò)展香拉,請(qǐng)按如下所示指定其擴(kuò)展ID:
強(qiáng)制擴(kuò)展在本地或者遠(yuǎn)程運(yùn)行
擴(kuò)有時(shí)候由于測(cè)試或者其他需要啦扬,要讓擴(kuò)展只運(yùn)行在本地或者遠(yuǎn)程主機(jī)上中狂,而無需兩方都運(yùn)行凫碌。基于擴(kuò)展程序的選項(xiàng)胃榕,可在settings.json設(shè)置其運(yùn)行在本地或者遠(yuǎn)程主機(jī)盛险。
例如,下面的設(shè)置將強(qiáng)制Docker和Debugger for Chrome擴(kuò)展程序遠(yuǎn)程運(yùn)行而不是本地默認(rèn)值:
上面配置的中的workspace表示擴(kuò)展運(yùn)行在遠(yuǎn)程主機(jī)勋又,對(duì)應(yīng)一個(gè)值"ui"則表示將其在本地UI/客戶端上運(yùn)行苦掘。
端口轉(zhuǎn)發(fā)和SSH隧道
Remote-SSH插件也支持Openssh特有一些高級(jí)功能,比如SSH轉(zhuǎn)發(fā)和SSH隧道楔壤。
臨時(shí)端口轉(zhuǎn)發(fā)
如果要在會(huì)話期間臨時(shí)轉(zhuǎn)發(fā)新端口鹤啡,可以在連接到SSH主機(jī)時(shí)候運(yùn)行ssh轉(zhuǎn)發(fā),格式為:**Remote-SSH: Forward Port from Active Host **蹲嚣。
輸入端口號(hào)后递瑰,會(huì)通知使用本地主機(jī)端口來訪問遠(yuǎn)程端口。例如隙畜,如果轉(zhuǎn)發(fā)監(jiān)聽的端口3000的HTTP服務(wù)器抖部,則通知可能會(huì)告訴它已映射到localhost上的端口4123。
此時(shí)就可以通過localhost:4123訪問遠(yuǎn)程的HTTP服務(wù)
固定端口轉(zhuǎn)發(fā)
如果需要設(shè)定一個(gè)可以長(zhǎng)期使用的端口轉(zhuǎn)發(fā)提供服務(wù)议惰,則需要在.ssh/config中配置轉(zhuǎn)發(fā)的配置慎颗,則可以在上面的"記住常連主機(jī)"部分配置類似,不過增加i個(gè)LocalForward指令即可。
例如俯萎,如果要轉(zhuǎn)發(fā)端口8080和6379傲宜,可按照下面配置:
上面配置中,我們把兩個(gè)遠(yuǎn)程服務(wù)器上端口8080和6379轉(zhuǎn)發(fā)到本機(jī)8888和6666夫啊,這樣就可以在本地通過ssh隧道訪問遠(yuǎn)程服務(wù)器上的web和redis服務(wù)了蛋哭。
遠(yuǎn)程主機(jī)終端
從VSC打開遠(yuǎn)程主機(jī)上的終端很簡(jiǎn)單。連接后涮母,在VSC菜單中的(Terminal > New Terminal)中打開的任何終端窗口谆趾,就會(huì)自動(dòng)連接到遠(yuǎn)程主機(jī)上,并可執(zhí)行shell操作叛本。
還可以使用此同一終端窗口中的code-insiders命令行來執(zhí)行許多操作沪蓬,例如在遠(yuǎn)程主機(jī)上打開新文件或文件夾。
遠(yuǎn)程代碼調(diào)試
連接到遠(yuǎn)程主機(jī)后来候,可以像在本地運(yùn)行應(yīng)用程序一樣使用VSC的調(diào)試器跷叉。例如,如果在launch.json中選擇啟動(dòng)配置并開始調(diào)試(F5)营搅,則應(yīng)用程序?qū)⒃谶h(yuǎn)程主機(jī)上啟動(dòng)并對(duì)其使用調(diào)試器云挟。
限制和缺點(diǎn)
Remote-SSH插件雖然提供強(qiáng)大的遠(yuǎn)程開發(fā)支持,但是目前預(yù)覽版本還存在很多的限制转质。
為安全方便建議使用證書方式進(jìn)行認(rèn)證园欣,雖然也支持基于賬號(hào)密碼和token認(rèn)證憑據(jù)不能保存。
目前還不支持不支持Windows和macOS的遠(yuǎn)程主機(jī)休蟹。(支持Windows和macOS客戶端沸枯。)
Windowss
Linux主機(jī)必須安裝Bash,tar和curl或wget赂弓。
Windows的SSH客戶端不支持PuTTY绑榴,而且.ssh文件權(quán)限配置較復(fù)雜,配置給當(dāng)前用戶盈魁,Administrators和 YSTEM全部控制權(quán)限翔怎。
無法在文件資源管理器中將文件直接復(fù)制到本地。
連接到SSH主機(jī)時(shí)安裝擴(kuò)展包時(shí)杨耙,擴(kuò)展可以在本地安裝赤套,而不是在主機(jī)內(nèi)部安裝。
如果使用SSH clone 存儲(chǔ)庫且SSH密鑰設(shè)置了密碼時(shí)候按脚,遠(yuǎn)程運(yùn)行時(shí)于毙,VSC的拉取和同步功能可能會(huì)掛起。
遠(yuǎn)程主機(jī)上不會(huì)重復(fù)使用本地代理設(shè)置辅搬,這可能會(huì)阻止擴(kuò)展工作唯沮,需要在遠(yuǎn)程主機(jī)上配置合適的代理信息(例如脖旱,配置全局的HTTP_PROXY或HTTPS_PROXY環(huán)境變量)。
總結(jié)
Remote-SSH做為VSC最新遠(yuǎn)程開發(fā)插件中的主打功能介蛉,我們本文實(shí)例介紹其安裝萌庆、配置、使用和高級(jí)配置的一些方法币旧。大家可以對(duì)比文章內(nèi)容動(dòng)手操作玩玩践险,學(xué)以致用,只有動(dòng)手才能真正的掌握一門技術(shù)吹菱。