現已釋出!閱讀關於 11 月新增功能和修復的內容。

Remote SSH: 提示與技巧

2019 年 10 月 3 日,作者:Sana Ajani,@sana_ajani

在之前的 Remote SSH 部落格文章中,我們介紹瞭如何設定 Linux 虛擬機器並使用 Visual Studio Code 中的 Remote - SSH 擴充套件連線到該 VM。在這篇部落格文章中,我們將介紹一些技巧和竅門,幫助您充分利用遠端設定。

使用 Remote SSH 進行連線

Visual Studio Code Remote - SSH 擴充套件允許您在 VS Code 內部透過 SSH 連線到遠端計算機或 VM。如果您尚未安裝該擴充套件,可以在擴充套件檢視 (⇧⌘X (Windows、Linux Ctrl+Shift+X)) 中搜索“remote ssh”。

Remote - SSH extension

安裝擴充套件後,您會注意到狀態列左下角有一個指示器。此指示器告訴您 VS Code 正在哪個上下文中執行(本地或遠端)。單擊該指示器會顯示遠端擴充套件命令列表。

Remote extension commands

SSH 配置檔案

在之前的 Remote SSH 部落格文章中,我們只連線了一臺機器,並在提示時輸入了“user@host”進行連線。如果您需要定期登入多個遠端伺服器或本地虛擬機器,有一種更好的連線方式,無需記住所有的使用者名稱、地址和額外的配置選項。

OpenSSH 支援使用 配置檔案來儲存所有不同的 SSH 連線。要使用 SSH 配置檔案,請單擊遠端指示器以調出遠端命令,選擇 Open Configuration File,然後選擇路徑為 "Users/{yourusername}/.ssh/config" 的檔案。

Open Configuration File command

下面是一個 SSH 配置檔案的示例

# Read more about SSH config files: https://linux.die.net/man/5/ssh_config
Host python-linux-vm
    HostName <vm address>
    User sana
    IdentityFile ~/.ssh/id_python_vm

Host node-vm
    HostName <vm address>
    User sana
    Port 5522
    IdentityFile ~/.ssh/id_node_vm

您可以在 SSH 配置檔案格式中指定更多 配置選項。在此檔案中,您將獲得補全和著色功能,您可以按 (⌃Space (Windows、Linux Ctrl+Space)) 來使用 IntelliSense,以瞭解有關配置選項的更多資訊。

上面使用的選項包括

選項 描述
Host 您的主機易於記憶的別名。
HostName 伺服器的主機名(您可以使用伺服器的 IP 地址)。
User 您透過 SSH 登入機器時指定的使用者名稱。
Port 用於透過 SSH 連線的埠。預設埠是 22,但如果您指定了唯一的埠,可以在這裡配置它。
IdentityFile 儲存私鑰的檔案位置。

您可以新增所有主機的資訊。儲存配置檔案後,您將能夠在遠端資源管理器中看到這些主機,以及您在該主機上開啟的任何資料夾。您可以選擇每個主機或資料夾旁邊的圖示,它將啟動一個新的 VS Code 視窗(例項)並連線到該主機。在下面的截圖中,我連線到了我的遠端機器 "python-linux-vm",遠端資源管理器顯示了我過去連線過的資料夾,以及從遠端機器轉發的任何埠。

Connected to python-linux-vm host machine

ProxyCommand

有時您可能需要透過公司的內網或防火牆連線到遠端機器。在這種情況下,您可能需要使用中間伺服器或 跳轉框。如果您在一個配置為只接受來自一組固定主機的 SSH 連線的安全系統內工作,這種設定非常有用。

要將跳轉框設定與 Remote - SSH 擴充套件一起使用,您可以使用 ProxyCommand 配置選項。此配置將開啟到跳轉框的後臺 SSH 連線,然後透過私有 IP 地址連線到目標。

您可以在 SSH 配置檔案中設定 ProxyCommand 配置選項,如下所示

# Jump box with public IP address
Host jump-box
    HostName 52.179.157.97
    User sana
    IdentityFile ~/.ssh/jumpbox

# Target machine with private IP address
Host target-box
    HostName <IP address of target>
    User sana
    IdentityFile ~/.ssh/target
    ProxyCommand ssh -q -W %h:%p jump-box

ControlMaster

如果您使用金鑰認證以外的其他認證方法連線到遠端 SSH 主機,例如雙因素認證、基於密碼的認證或帶有密碼短語的 SSH 金鑰,您可能需要多次輸入所需資訊。

與其開啟多個 SSH 連線,不如使用 ControlMaster 選項(僅適用於 macOS/Linux 客戶端)來重用現有連線,並減少輸入密碼短語的次數。

要使用此功能,請將以下內容新增到您的 SSH 配置檔案中

Host *
    ControlMaster auto
    ControlPath ~/.ssh/sockets/%r@%h-%p
    ControlPersist 600

離線遠端機器

如果您受防火牆限制或公司鎖定您的 VM,並且它們無法連線到 Internet,Remote - SSH 擴充套件將無法連線到您的 VM,因為 VS Code 需要將一個名為 VS Code Server 的元件下載到遠端機器上。

但是,您現在可以透過 Remote - SSH 擴充套件中的新使用者 設定來解決此問題。如果您啟用設定 remote.SSH.allowLocalServerDownload,擴充套件將首先在客戶端上安裝 VS Code Server,然後透過 SCP將其複製到伺服器上。

注意:這目前是一個實驗性功能,但在下一個版本中將預設開啟。

Remote - SSH Nightly 擴充套件

如果您有興趣在有新更新和實驗性功能時立即進行測試,請安裝 Remote - SSH Nightly 擴充套件(請先解除安裝 Remote-SSH 穩定版擴充套件)。這是擴充套件的每夜構建版本,我們在其中試驗新功能和設定,然後才將它們釋出到穩定版本中。

我們希望得到您的反饋

感謝您試用 Remote - SSH 擴充套件!如果您遇到任何問題,或者想為我們建議新功能或場景,請在我們的 GitHub repo 上提出 issue。如果您想了解我們目前正在開發或即將推出的功能,請檢視我們的遠端開發 發行說明迭代計劃。您還可以嘗試介紹性的 透過 SSH 進行遠端開發教程,它將指導您使用其他遠端擴充套件在 Docker 容器和 Window Subsystem for Linux (WSL) 中工作。

遠端編碼愉快!

Sana Ajani,VS Code 專案經理 @sana_ajani

© . This site is unofficial and not affiliated with Microsoft.