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

在 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 用戶端:




ssh
指令後續步驟請接續首次連結 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
指令免密碼成功登入,否則 Remote - SSH emote - SSH 會連結失敗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 時,無法連結且輸出以下錯誤訊息:

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










參考

本著作係採用創用 CC 姓名標示-相同方式分享 3.0 台灣 授權條款授權.
版大您好,我按照您的方式,每一步都照著做,也有遇到win10那個困難,都照著修正後
但最終在VScode中還是沒辦法連線到遠端,並出現以下訊息
Could not establish connection to "Ubuntu": Connecting was canceled.
想要請大大解惑,謝謝!
1.您有先在「Windows 命令提示字元」使用 SSH 先連結一次嗎?
2.請問您 Ubuntu 16.04 以上版本嗎?太舊版無法支援。