參加你附近的 ,瞭解 VS Code 中的 AI 輔助開發。

透過 SSH 連線到遠端 Docker

我們建議使用 Visual Studio Code 的 Remote - SSH 擴充套件連線到執行 Docker 引擎的遠端計算機。您可以同時使用 Remote - SSHDev Containers 擴充套件。您可以檢視 Dev Containers 文件中的步驟。

也可以使用 SSH 隧道直接連線到遠端 Docker 引擎,您可以在下面閱讀更多相關資訊。

設定 SSH 隧道

  1. 使用 ssh-keygen 或類似工具獲取並配置用於 SSH 身份驗證的公鑰/私鑰對。Docker 不支援密碼身份驗證,並且無法透過基於 DOCKER_HOST 的配置實現。如果已設定金鑰對,則可以使用它。

  2. 本地系統上使用上面生成的私鑰檔案配置 ssh-agent

    • Windows (OpenSSH):最新版本的 Windows 10 預設包含 OpenSSH。有一個 Windows 服務 ssh-agent 預設停用,需要重新啟用並設定為自動啟動。從管理員 PowerShell 提示符下,執行 Set-Service ssh-agent -StartupType "Automatic"Start-Service ssh-agent。然後,執行 ssh-add <keyfile>

    • Windows (Pageant):您可以使用 Pageant 而不是 OpenSSH,在這種情況下,需要設定環境變數 SSH_AUTH_SOCK=pageant。將其設定為使用者或系統環境變數將是最簡單的方法。

    • Linux: ssh-agent 預設存在。執行 ssh-add <keyfile>。已測試 Ubuntu;在其他發行版上您可能會有不同的結果。

    • macOS: ssh-agent 預設存在,但 ssh-add 在登入後不會持久。執行 ssh-add <keyfile>。我們建議配置 VS Code 在終端啟動時執行此命令,使用 terminal.integrated.profiles.osx args 值,或以其他方式配置啟動指令碼。您也可以在每次登入時手動執行該命令。

  3. 使用 ssh-add -l 驗證您的身份是否可供代理使用。它應該列出一個或多個看起來像 2048 SHA256:abcdefghijk somethingsomething (RSA) 的身份。如果它沒有列出任何身份,您將無法連線。此外,它需要擁有正確的身份。如果 Docker CLI 正常工作,容器資源管理器也應該正常工作。容器資源管理器視窗使用 Docker CLI,而 Docker CLI 又使用 ssh 命令,並受益於自動推斷的配置。

  4. 建立一個指向執行 Docker 的遠端機器的 Docker 上下文。使用 ssh://username@host:port 作為 Docker 端點(將“host”替換為您的遠端機器名稱或遠端機器 IP 地址)。在終端視窗中執行以下命令

    docker context create my-remote-docker-machine --docker "host=ssh://username@host:port"
    

    Docker 端點地址中始終包含使用者名稱,即使它與本地使用者名稱相同。如果省略埠,則預設為 22。

  5. 使用命令面板 (⇧⌘P (Windows, Linux Ctrl+Shift+P)) 執行 Docker Contexts: Use 命令以啟用指向遠端機器的 Docker 上下文。此命令使 VS Code 和 Docker CLI 都使用遠端機器上下文。

    如果您沒有此命令,請確保安裝 Container Tools 擴充套件

  6. 建議使用 containers.explorerRefreshInterval 設定將重新整理率更改為比預設值更長的值。透過 SSH 的連線很慢,這可能會導致在上次重新整理完成之前再次嘗試重新整理。我們建議至少 3000 毫秒。

提示

  • Docker 端點字串(ssh://username@host:port)中的“host”部分必須是全域性可解析的 DNS 機器名或 IP 地址。Container Tools 擴充套件將無法使用 SSH 配置檔案中定義的主機別名。

  • 確保遠端機器主機金鑰已儲存在 known_hosts 檔案中。最簡單的方法是透過 ssh 客戶端程式連線到機器(從命令列執行 ssh username@host:port)。首次連線時,ssh 程式將顯示主機金鑰並讓您批准,自動更新 known_hosts 檔案。

  • Windows 10 Build 1909 及更早版本附帶的 ssh-keygen 實用程式存在一個問題,導致它無法與較新的 SSH 守護程式(例如,Ubuntu 20.04 LTS 及更高版本附帶的守護程式)正常工作。解決方法是使用 ECDSA 型別金鑰,而不是 RSA 型別金鑰進行 SSH 連線。您可以使用以下命令生成 ECDSA SSH 金鑰並將其新增到 SSH 代理:

    ssh-keygen -t ecdsa -b 521
    ssh-add id_ecdsa
    
  • Windows 10 Build 1909 及更早版本受 一個問題 影響,該問題阻止 SSH 在 Windows 作業系統更新後獲取您的身份。解決方法是向系統配置新增一個虛擬服務條目。從管理員 PowerShell 視窗執行以下命令:

    New-Service sshd -BinaryPathName "C:\Windows\System32\OpenSSH\ssh.exe"