玩轉VSC遠程開發之Remote-SSH遠程連接開發環境

昨天文章,我們介紹了VSC的遠程開發擴展,包括了docker、SSH和WSL,本文蟲蟲來給大家實例深入介紹下Remote-SSH擴展。

之前的文章中我們說了遠程開發擴展需要在最新的VSC Insiders版本,本文中我們提到的所有VSC都是在該版本下操作,截止本文撰寫時候VSC Insiders最新版本為1.33。

概述

VSC的Remote-SSH擴展是VSC 遠程開發的三個自插件之一,用於通過SSH協議鏈接到遠程的開發環境,打開遠程文件夾,實現和VSC IDE功能的無縫集成。連接到服務器後,可以實現與遠程服務器文件系統上的代碼文件和運行環境交互。通過該擴展VSC實現在遠程服務器運行命令和擴展,本地VSC所在計算機上無需要源代碼和開發運行環境,就能實現和提供本地開發一樣的體驗,包括完整的IntelliSense(高亮、補全),代碼導航和斷點調試等。

玩轉VSC遠程開發之Remote-SSH遠程連接開發環境

安裝部署

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

玩轉VSC遠程開發之Remote-SSH遠程連接開發環境

安裝遠程開發Remote Development擴展包。

SSH客戶端配置

如果服務器需要通過多因素身份驗證,比如要用證書登陸,需要設置

settings.json的remote.SSH.showLoginTerminal:true啟用ControlMaster SSH功能。

玩轉VSC遠程開發之Remote-SSH遠程連接開發環境

VSC使用SSH配置文件,並且需要基於SSH密鑰認證才能連接到主機。具體配置方法如下:

1、 配置公鑰認證,並在遠程主機上(本例中的10.0.1.8)添加公鑰到~/.ssh/authorized_keys

2、 在VSC命令選項板(或者F1)選擇Remote-SSH:Connect to Host,下拉列表選擇Configure SSH Hosts ...,配置遠程服務器信息:HostName,Port,User以及私鑰的文件(和添加到遠程服務器的公鑰配對)。

玩轉VSC遠程開發之Remote-SSH遠程連接開發環境

注意設置~/.ssh/目錄下config和證書的文件權限,需要配置給當前用戶,Administrators和 YSTEM全部控制權限。

2、運行VSC命令選項板(或者F1)Remote-SSH:Connect to Host,選擇主機比如我們上一步奏配置的SEC-test,或者自定義輸入主機名和用戶(注意這種情況主機的端口必須為默認的22),格式為:user@hostname

玩轉VSC遠程開發之Remote-SSH遠程連接開發環境

3、VSC會連接到SSH服務器並自行設置。 VSC將使用進度條提示連接的信息,可以在Remote-SSH 輸出標籤頁中查看詳細日誌。

4.連接後,將進入一個空窗口。我使用可以使用文件>打開,或文件>打開工作區打開遠程服務器上的文件文件夾或工作區

玩轉VSC遠程開發之Remote-SSH遠程連接開發環境

5.選擇的文件夾或工作區將會打開。從"擴展"視圖中安裝需要的擴展,比如Python擴展。

玩轉VSC遠程開發之Remote-SSH遠程連接開發環境

記住常連主機

配置過程和上步驟中第二步驟,在配置文件中重複建立不同的Host配置項即可,比如我們再增加一個數據主機:

玩轉VSC遠程開發之Remote-SSH遠程連接開發環境

保存,再此連接時候就能看到保存這個主機SEC-db了。

玩轉VSC遠程開發之Remote-SSH遠程連接開發環境

如果要使用與列出的配置文件不同的配置文件,需要在settings.json中設置"remote.SSH.configFile"屬性。

管理擴展

VSC擴展運行在UI/客戶端本地,或在遠程主機上。影響VSC UI的擴展(如主題和代碼段)都安裝在本地,但大多數擴展要都要運行在遠程主機上。這可確保獲得流暢的體驗,需要通過為SSH主機上的給定工作區安裝任何所需的擴展。

如果從"擴展"視圖安裝擴展,它將自動安裝在正確的位置。安裝後,可以根據類別分組確定擴展的安裝位置。遠程SSH主機和本地安裝類別將有一個類別。

比如下面就是一個遠程擴展:

玩轉VSC遠程開發之Remote-SSH遠程連接開發環境

默認安裝擴展程序

如果希望在連接的SSH主機上是默認安裝遠程擴展,可以配置settings.json remote.SSH.extensions屬性指定需要安裝的擴展。例如,如果要安裝GitLens和資源監視器擴展,請按如下所示指定其擴展ID:

玩轉VSC遠程開發之Remote-SSH遠程連接開發環境

強制擴展在本地或者遠程運行

擴有時候由於測試或者其他需要,要讓擴展只運行在本地或者遠程主機上,而無需兩方都運行。基於擴展程序的選項,可在settings.json設置其運行在本地或者遠程主機。

例如,下面的設置將強制Docker和Debugger for Chrome擴展程序遠程運行而不是本地默認值:

玩轉VSC遠程開發之Remote-SSH遠程連接開發環境

上面配置的中的workspace表示擴展運行在遠程主機,對應一個值"ui"則表示將其在本地UI/客戶端上運行。

端口轉發和SSH隧道

Remote-SSH插件也支持Openssh特有一些高級功能,比如SSH轉發和SSH隧道。

臨時端口轉發

如果要在會話期間臨時轉發新端口,可以在連接到SSH主機時候運行ssh轉發,格式為:Remote-SSH: Forward Port from Active Host

輸入端口號後,會通知使用本地主機端口來訪問遠程端口。例如,如果轉發監聽的端口3000的HTTP服務器,則通知可能會告訴它已映射到localhost上的端口4123。

此時就可以通過localhost:4123訪問遠程的HTTP服務

固定端口轉發

如果需要設定一個可以長期使用的端口轉發提供服務,則需要在.ssh/config中配置轉發的配置,則可以在上面的"記住常連主機"部分配置類似,不過增加i個LocalForward指令即可。

例如,如果要轉發端口8080和6379,可按照下面配置:

玩轉VSC遠程開發之Remote-SSH遠程連接開發環境

上面配置中,我們把兩個遠程服務器上端口8080和6379轉發到本機8888和6666,這樣就可以在本地通過ssh隧道訪問遠程服務器上的web和redis服務了。

遠程主機終端

從VSC打開遠程主機上的終端很簡單。連接後,在VSC菜單中的(Terminal > New Terminal)中打開的任何終端窗口,就會自動連接到遠程主機上,並可執行shell操作。

還可以使用此同一終端窗口中的code-insiders命令行來執行許多操作,例如在遠程主機上打開新文件或文件夾。

玩轉VSC遠程開發之Remote-SSH遠程連接開發環境

遠程代碼調試

連接到遠程主機後,可以像在本地運行應用程序一樣使用VSC的調試器。例如,如果在launch.json中選擇啟動配置並開始調試(F5),則應用程序將在遠程主機上啟動並對其使用調試器。

玩轉VSC遠程開發之Remote-SSH遠程連接開發環境

限制和缺點

Remote-SSH插件雖然提供強大的遠程開發支持,但是目前預覽版本還存在很多的限制。

為安全方便建議使用證書方式進行認證,雖然也支持基於賬號密碼和token認證憑據不能保存。

目前還不支持不支持Windows和macOS的遠程主機。(支持Windows和macOS客戶端。)

Windowss

Linux主機必須安裝Bash,tar和curl或wget。

Windows的SSH客戶端不支持PuTTY,而且.ssh文件權限配置較複雜,配置給當前用戶,Administrators和 YSTEM全部控制權限。

無法在文件資源管理器中將文件直接複製到本地。

連接到SSH主機時安裝擴展包時,擴展可以在本地安裝,而不是在主機內部安裝。

如果使用SSH clone 存儲庫且SSH密鑰設置了密碼時候,遠程運行時,VSC的拉取和同步功能可能會掛起。

遠程主機上不會重複使用本地代理設置,這可能會阻止擴展工作,需要在遠程主機上配置合適的代理信息(例如,配置全局的HTTP_PROXY或HTTPS_PROXY環境變量)。

總結

Remote-SSH做為VSC最新遠程開發插件中的主打功能,我們本文實例介紹其安裝、配置、使用和高級配置的一些方法。大家可以對比文章內容動手操作玩玩,學以致用,只有動手才能真正的掌握一門技術。


分享到:


相關文章: