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

在容器中共享 Git 憑據

Dev Containers 擴充套件提供了開箱即用的支援,允許在容器內部使用本地 Git 憑據。在本節中,我們將介紹兩種受支援的選項。

如果您的本地未設定使用者名稱或電子郵件地址,系統可能會提示您進行設定。您可以透過在本地計算機上執行以下命令來完成此操作:

git config --global user.name "Your Name"
git config --global user.email "your.email@address"

擴充套件程式會在啟動時自動將您的本地 .gitconfig 檔案複製到容器中,因此您不需要在容器本身中執行此操作。

使用憑據助手

如果您使用 HTTPS 克隆儲存庫,並且在本地作業系統中配置了憑據助手,則無需進行其他設定。您在本地輸入的憑據將在容器中重複使用,反之亦然。

使用 SSH 金鑰

在某些情況下,您可能使用 SSH 金鑰而不是憑據助手來克隆儲存庫。為了啟用這種情況,如果本地 SSH 代理正在執行,擴充套件程式將自動轉發它。

首先,您應該確保在主機上啟用了 SSH 代理轉發。在 sshd_config 中查詢 AllowAgentForwarding 選項(通常位於 /etc/ssh/sshd_config%programdata%\ssh\sshd_config)。如果尚未設定,您應將其設定為 yes 並重新載入或重新啟動 sshd 服務。

如果本地 SSH 代理正在執行,您可以使用 ssh-add 命令將本地 SSH 金鑰新增到代理中。例如,在終端或 PowerShell 中執行以下命令:

ssh-add

它將新增預設檔案(~/.ssh/id_rsa.ssh/id_dsa~/.ssh/id_ecdsa~/.ssh/id_ed25519~/.ssh/identity)。如果您想指定一個金鑰,只需在命令後附加其路徑即可。

在 Windows 和 Linux 上,您可能會因為代理未執行而收到錯誤(macOS 通常預設執行)。請按照以下步驟解決問題:

Windows:

啟動一個本地管理員 PowerShell 並執行以下命令:

# Make sure you're running as an Administrator
Set-Service ssh-agent -StartupType Automatic
Start-Service ssh-agent
Get-Service ssh-agent

Linux

首先,透過在終端中執行以下命令在後臺啟動 SSH 代理:

eval "$(ssh-agent -s)"

然後將這些行新增到您的 ~/.bash_profile~/.zprofile(用於 Zsh),以便在登入時啟動它:

if [ -z "$SSH_AUTH_SOCK" ]; then
   # Check for a currently running instance of the agent
   RUNNING_AGENT="`ps -ax | grep 'ssh-agent -s' | grep -v grep | wc -l | tr -d '[:space:]'`"
   if [ "$RUNNING_AGENT" = "0" ]; then
        # Launch a new instance of the agent
        ssh-agent -s &> $HOME/.ssh/ssh-agent
   fi
   eval `cat $HOME/.ssh/ssh-agent` > /dev/null
   ssh-add 2> /dev/null
fi

在最後一行中,將 <your ssh key> 替換為您的特定 ssh 金鑰。

例如 ssh-add $HOME/.ssh/id_ed25519 2> /dev/null

如果您遇到任何問題,您可能需要檢視 Dev Containers 擴充套件程式的已知限制

共享 GPG 金鑰

如果您想對提交進行 GPG 簽名,您也可以將本地金鑰共享給容器。您可以在 GitHub 的文件中瞭解如何使用 GPG 金鑰進行簽名。

如果您尚未設定 GPG,可以為您的平臺進行配置:

  • Windows 上,您可以安裝 Gpg4win
  • macOS 上,您可以安裝 GPG Tools
  • Linux 上,在本地使用系統的包管理器安裝 gnupg2 包。
  • WSL
    • 在 Windows 端安裝 Gpg4win
    • 在 WSL 發行版中安裝 gpgsudo apt install gpg
    • 在 WSL 發行版中註冊 pinentry GUI。echo pinentry-program /mnt/c/Program\ Files\ \(x86\)/Gpg4win/bin/pinentry.exe > ~/.gnupg/gpg-agent.conf
    • 在 WSL 中重新載入 gpg 代理。gpg-connect-agent reloadagent /bye

注意:對於 Windows 使用者,gpg 簽名金鑰必須使用 Windows GUI 或 CLI (powershell/cmd) 進行配置,而不是在 Git Bash 中進行配置。Dev Container 無法訪問在 Git Bash 中設定的 gpg 金鑰,即使它位於您的 ~/.gnupg/ 資料夾中,並且在 Windows 資源管理器中可訪問。

接下來,透過更新 Dockerfile 在容器中安裝 gnupg2

例如

RUN apt-get update && apt-get install gnupg2 -y

或者如果作為非 root 使用者執行:

RUN sudo apt-get update && sudo apt-get install gnupg2 -y

要應用配置更改,您需要重建容器。您可以透過從命令面板 (F1) 執行 Dev Containers: Rebuild Container 來完成此操作。下次容器啟動時,您的 GPG 金鑰也應該在容器內部可訪問。

注意:如果您以前在容器中使用過 gpg,您可能需要執行 Dev Containers: Rebuild Container 才能使更新生效。

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