Visual Studio Code 使用 Remote - SSH 開啟遠端 Linux 資料夾

Visual Studio Code

在 Windows 7/10 使用 Visual Studio Code 的 Remote - SSH 延伸模組,就能夠 SSH 開啟並掛載遠端 Linux Server 資料夾,即可實現編修資料夾與檔案就像在自己的電腦上一樣。

Remote - SSH

Remote - SSH 是一套 Microsoft 於 2019-5-3 發佈的 Visual Studio Code 延伸模組,它能夠 SSH 開啟遠端 Linux Server 資料夾。

Linux OpenSSH Server 要求

目前完全支援的 Linux Server 如下:

  • CentOS / RHEL 7+。(站長使用 CentOS 7)
  • x86_64 Debian 8+。
  • Ubuntu 16.04+。

安裝

Remote - SSH - Visual Studio Marketplace 點擊 Install 即可。安裝完成後左下方會多出一個 Remote - SSH 區塊:

Windows (Client)

安裝 OpenSSH

Windows 必須安裝 OpenSSH Client,才能使用 ssh 指令連結 Linux OpenSSH Server,但 Windows 7 與 Windows 10 安裝方式與問題都不相同,因此將各別解說。

Windows 7

安裝 Git fot Windows 後,預設就包含 OpenSSH Client 了。安裝完成後在手動將 Git 指令路徑 C:\Program Files\Git\usr\bin 加入 Path「環境變數」中 (路徑前必須加上分號 ; 區隔):

後續步驟請接續首次連結 Linux OpenSSH Server

Windows 10

依下圖指示安裝 OpenSSH 用戶端:

後續步驟請接續首次連結 Linux OpenSSH Server

首次連結 Linux OpenSSH Server

首次在「Windows 命令提示字元」使用 ssh 指令成功連結 Linux OpenSSH Server 時,會自動在使用者家目錄下產生 .ssh/ 的目錄。

ssh jacky@220.xxx.84.xxx
The authenticity of host '[220.xxx.84.xxx]:22 ([220.xxx.84.xxx]:22)' can't be established.
ECDSA key fingerprint is SHA256:d2UxxxxxgbE1/xxxxxQ7MrZxxxxx8EtcfxxxxxN/Y/Y.
Are you sure you want to continue connecting (yes/no)?

同時會詢問是否要永久性地將該 Server 的 ECDSA 密鑰添加到已知的主機列表中,輸入 yes 後 (下次在登入該 Server 就不會再詢問了),同時會自動在 .ssh/ 目錄下新增用來保存主機與 ECDSA 密鑰對應列表的檔案 known_hosts:

The authenticity of host '[220.xxx.84.xxx]:22 ([220.xxx.84.xxx]:22)' can't be established.
ECDSA key fingerprint is  SHA256:d2UxxxxxgbE1/xxxxxQ7MrZxxxxx8EtcfxxxxxN/Y/Y. 
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '[220.xxx.84.xxx]:22' (ECDSA) to the list of known hosts.
jacky@220.xxx.84.xxx's password:

known_hosts 檔案保存的內容:

220.xxx.84.xxx ecdsa-sha2-nistp256 AAAAE2VjZHNhxxxxxTItbmlzdHAyNTYAxxxxxmlzdHAyNTYAAABBBJMxxxxxBL1esSAkkkFxxxxxlH00YzPHqn/LFFYPxxxxxwEEG3psmasurhX5PRzIdy++fxxxxxMZxTyvB9FBb6o=

加入 Private Key

要在 Windows 7/10 的 Visual Studio Code 透過 Remote - SSH 延伸模組連結 Linux OpenSSH Server,無法使用輸入密碼的方式登入,必須依靠 SSH 金鑰免密碼登入。如何建立金鑰與加入 Private Key 請參考 Windows 使用 SSH 金鑰免密碼登入 Linux

Visual Studio Code

點擊 Configure > 使用者家目錄 .\ssh.config,建立 Remote - SSH 設定檔:

Remote - SSH 常用基本設定說明如下 (詳細完整手冊可參考設定檔所附連結 OpenSSH SSH client config files):

  • Host:設定檔名稱。
  • Port:指定 SSH 連結 port (未指定預設為 22 port)。
  • HostName:Linux OpenSSH Server 位址。
  • User:登入 Linux OpenSSH Server 的帳戶。
  • IdentityFile:指定要使用的 Private Key 檔,如有多個 Private Key 檔時就必須指定 (未指定預設為使用者家目錄下的 .ssh/id_rsa)

設定完成存檔左側會立即顯示 Host 所設定的名稱,點擊右側的小紅框就會立即與 Linux OpenSSH Server 進行連結:

SSH client config 設定:

# 最小基本設定
Host home
    HostName 192.168.1.232 
    User root

# 進階設定
Host project-server-guest-iii
    HostName 220.130.84.74
    Port 3222
    User jacky
    IdentityFile C:\Users\Jacky\.ssh\project-server-guest-iii\id_rsa

點選「開啟資料夾」就會打開 Linux Server 目錄列表,選定要開啟的目錄按「確定」,即可加入遠端 Linux Server 的目錄:

Windows 10 錯誤排除

Windows 10 使用 Remote - SSH,在 .ssh/ 目錄下的設定檔與 Private Key (config 與 id_rsa) 的使用者,僅能有當前登入的使用者,否則會造成 Remote - SSH 連結 Linux OpenSSH Server 時,無法連結且輸出以下錯誤訊息:

請依下圖步驟設定 configid_rsa 這兩個檔案的權限:

參考

在〈Visual Studio Code 使用 Remote - SSH 開啟遠端 Linux 資料夾〉中有 2 則留言

  1. 版大您好,我按照您的方式,每一步都照著做,也有遇到win10那個困難,都照著修正後
    但最終在VScode中還是沒辦法連線到遠端,並出現以下訊息

    Could not establish connection to "Ubuntu": Connecting was canceled.

    想要請大大解惑,謝謝!

    • 1.您有先在「Windows 命令提示字元」使用 SSH 先連結一次嗎?
      2.請問您 Ubuntu 16.04 以上版本嗎?太舊版無法支援。

發表留言