最新VSC 預(yù)覽發(fā)布了新版本,其中引入了強大的VSC的遠程開發(fā)擴展,包括了docker、SSH和WSL,本文蟲蟲來給大家實例深入介紹下Remote-SSH擴展。遠程開發(fā)擴展需要在最新的VSC Insiders版本,本文中我們提到的所有VSC都是在該版本下操作,截止本文撰寫時候VSC Insiders最新版本為1.33。
概述
VSC的Remote-SSH擴展是VSC 遠程開發(fā)的三個自插件之一,用于通過SSH協(xié)議鏈接到遠程的開發(fā)環(huán)境,打開遠程文件夾,實現(xiàn)和VSC IDE功能的無縫集成。連接到服務(wù)器后,可以實現(xiàn)與遠程服務(wù)器文件系統(tǒng)上的代碼文件和運行環(huán)境交互。通過該擴展VSC實現(xiàn)在遠程服務(wù)器運行命令和擴展,本地VSC所在計算機上無需要源代碼和開發(fā)運行環(huán)境,就能實現(xiàn)和提供本地開發(fā)一樣的體驗,包括完整的IntelliSense(高亮、補全),代碼導(dǎo)航和斷點調(diào)試等。
安裝部署
Remote-SSH依賴于一下軟件,要使用該插件必須安裝首先安裝:
安裝依賴插件
VSC Insiders嘗鮮版:即綠色頭標的VSC。VSC真實版本是藍色頭標的。
兼容OpenSSH的SSH客戶端:需要配置Windows路徑,不支持Putty。
具體安裝步驟:
MS+X 啟動管理員身份啟動的命令行,輸入 PowerShell進到Powershell界面。
輸入以下PowerShell命令獲取在線的Openssh
Get-WindowsCapability -Online | ? Name -like 'OpenSSH*'
通過輸入命令安裝OpenSSH客戶端
Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0
安裝遠程開發(fā)Remote Development擴展包。
SSH客戶端配置
如果服務(wù)器需要通過多因素身份驗證,比如要用證書登陸,需要設(shè)置
settings.json的remote.SSH.showLoginTerminal:true啟用ControlMaster SSH功能。
VSC使用SSH配置文件,并且需要基于SSH密鑰認證才能連接到主機。具體配置方法如下:
1、 配置公鑰認證,并在遠程主機上(本例中的10.0.1.8)添加公鑰到~/.ssh/authorized_keys
2、 在VSC命令選項板(或者F1)選擇Remote-SSH:Connect to Host,下拉列表選擇Configure SSH Hosts ...,配置遠程服務(wù)器信息:HostName,Port,User以及私鑰的文件(和添加到遠程服務(wù)器的公鑰配對)。
注意設(shè)置~/.ssh/目錄下config和證書的文件權(quán)限,需要配置給當前用戶,Administrators和 YSTEM全部控制權(quán)限。
2、運行VSC命令選項板(或者F1)Remote-SSH:Connect to Host,選擇主機比如我們上一步奏配置的SEC-test,或者自定義輸入主機名和用戶(注意這種情況主機的端口必須為默認的22),格式為:user@hostname
3、VSC會連接到SSH服務(wù)器并自行設(shè)置。 VSC將使用進度條提示連接的信息,可以在Remote-SSH 輸出標簽頁中查看詳細日志。
4.連接后,將進入一個空窗口。我使用可以使用文件>打開,或文件>打開工作區(qū)打開遠程服務(wù)器上的文件文件夾或工作區(qū)
5.選擇的文件夾或工作區(qū)將會打開。從"擴展"視圖中安裝需要的擴展,比如Python擴展。
記住常連主機
配置過程和上步驟中第二步驟,在配置文件中重復(fù)建立不同的Host配置項即可,比如我們再增加一個數(shù)據(jù)主機:
保存,再此連接時候就能看到保存這個主機SEC-db了。
如果要使用與列出的配置文件不同的配置文件,需要在settings.json中設(shè)置"remote.SSH.configFile"屬性。
管理擴展
VSC擴展運行在UI/客戶端本地,或在遠程主機上。影響VSC UI的擴展(如主題和代碼段)都安裝在本地,但大多數(shù)擴展要都要運行在遠程主機上。這可確保獲得流暢的體驗,需要通過為SSH主機上的給定工作區(qū)安裝任何所需的擴展。
如果從"擴展"視圖安裝擴展,它將自動安裝在正確的位置。安裝后,可以根據(jù)類別分組確定擴展的安裝位置。遠程SSH主機和本地安裝類別將有一個類別。
比如下面就是一個遠程擴展:
默認安裝擴展程序
如果希望在連接的SSH主機上是默認安裝遠程擴展,可以配置settings.json remote.SSH.extensions屬性指定需要安裝的擴展。例如,如果要安裝GitLens和資源監(jiān)視器擴展,請按如下所示指定其擴展ID:
強制擴展在本地或者遠程運行
擴有時候由于測試或者其他需要,要讓擴展只運行在本地或者遠程主機上,而無需兩方都運行?;跀U展程序的選項,可在settings.json設(shè)置其運行在本地或者遠程主機。
例如,下面的設(shè)置將強制Docker和Debugger for Chrome擴展程序遠程運行而不是本地默認值:
上面配置的中的workspace表示擴展運行在遠程主機,對應(yīng)一個值"ui"則表示將其在本地UI/客戶端上運行。
端口轉(zhuǎn)發(fā)和SSH隧道
Remote-SSH插件也支持Openssh特有一些高級功能,比如SSH轉(zhuǎn)發(fā)和SSH隧道。
臨時端口轉(zhuǎn)發(fā)
如果要在會話期間臨時轉(zhuǎn)發(fā)新端口,可以在連接到SSH主機時候運行ssh轉(zhuǎn)發(fā),格式為:**Remote-SSH: Forward Port from Active Host **。
輸入端口號后,會通知使用本地主機端口來訪問遠程端口。例如,如果轉(zhuǎn)發(fā)監(jiān)聽的端口3000的HTTP服務(wù)器,則通知可能會告訴它已映射到localhost上的端口4123。
此時就可以通過localhost:4123訪問遠程的HTTP服務(wù)
固定端口轉(zhuǎn)發(fā)
如果需要設(shè)定一個可以長期使用的端口轉(zhuǎn)發(fā)提供服務(wù),則需要在.ssh/config中配置轉(zhuǎn)發(fā)的配置,則可以在上面的"記住常連主機"部分配置類似,不過增加i個LocalForward指令即可。
例如,如果要轉(zhuǎn)發(fā)端口8080和6379,可按照下面配置:
上面配置中,我們把兩個遠程服務(wù)器上端口8080和6379轉(zhuǎn)發(fā)到本機8888和6666,這樣就可以在本地通過ssh隧道訪問遠程服務(wù)器上的web和redis服務(wù)了。
遠程主機終端
從VSC打開遠程主機上的終端很簡單。連接后,在VSC菜單中的(Terminal > New Terminal)中打開的任何終端窗口,就會自動連接到遠程主機上,并可執(zhí)行shell操作。
還可以使用此同一終端窗口中的code-insiders命令行來執(zhí)行許多操作,例如在遠程主機上打開新文件或文件夾。
遠程代碼調(diào)試
連接到遠程主機后,可以像在本地運行應(yīng)用程序一樣使用VSC的調(diào)試器。例如,如果在launch.json中選擇啟動配置并開始調(diào)試(F5),則應(yīng)用程序?qū)⒃谶h程主機上啟動并對其使用調(diào)試器。
限制和缺點
Remote-SSH插件雖然提供強大的遠程開發(fā)支持,但是目前預(yù)覽版本還存在很多的限制。
為安全方便建議使用證書方式進行認證,雖然也支持基于賬號密碼和token認證憑據(jù)不能保存。
目前還不支持不支持Windows和macOS的遠程主機。(支持Windows和macOS客戶端。)
Windowss
Linux主機必須安裝Bash,tar和curl或wget。
Windows的SSH客戶端不支持PuTTY,而且.ssh文件權(quán)限配置較復(fù)雜,配置給當前用戶,Administrators和 YSTEM全部控制權(quán)限。
無法在文件資源管理器中將文件直接復(fù)制到本地。
連接到SSH主機時安裝擴展包時,擴展可以在本地安裝,而不是在主機內(nèi)部安裝。
如果使用SSH clone 存儲庫且SSH密鑰設(shè)置了密碼時候,遠程運行時,VSC的拉取和同步功能可能會掛起。
遠程主機上不會重復(fù)使用本地代理設(shè)置,這可能會阻止擴展工作,需要在遠程主機上配置合適的代理信息(例如,配置全局的HTTP_PROXY或HTTPS_PROXY環(huán)境變量)。
總結(jié)
Remote-SSH做為VSC最新遠程開發(fā)插件中的主打功能,我們本文實例介紹其安裝、配置、使用和高級配置的一些方法。大家可以對比文章內(nèi)容動手操作玩玩,學(xué)以致用,只有動手才能真正的掌握一門技術(shù)。