與您的容器共用 Git 認證
開發容器擴充功能提供現成的支援,可從容器內部使用本機 Git 認證。在本節中,我們將逐步說明兩個支援的選項。
如果您未在本機設定使用者名稱或電子郵件地址,系統可能會提示您進行設定。您可以在您的本機電腦上執行下列命令來完成此操作
git config --global user.name "Your Name"
git config --global user.email "your.email@address"
擴充功能會在啟動時自動將您的本機 .gitconfig
檔案複製到容器中,因此您應該不需要在容器本身中執行此操作。
使用認證輔助程式
如果您使用 HTTPS 來複製您的儲存庫,並且在本機作業系統中設定了認證輔助程式,則無需進一步設定。 您在本機輸入的認證將在容器中重複使用,反之亦然。
使用 SSH 金鑰
在某些情況下,您可能會使用 SSH 金鑰而不是認證輔助程式來複製您的儲存庫。為了啟用此情境,如果本機 SSH agent 正在執行,則擴充功能會自動轉發。
首先,您應確保在主機上已啟用 SSH agent 轉發。在 sshd_config 中搜尋 AllowAgentForwarding
選項 (通常位於 /etc/ssh/sshd_config
或 %programdata%\ssh\sshd_config
)。如果尚未設定,您應將其設定為 yes
並重新載入或重新啟動 sshd
服務。
如果您的本機 SSH 金鑰已在執行中,您可以使用 ssh-add
命令將其新增至 agent。例如,從終端機或 PowerShell 執行此命令
ssh-add
它將新增預設檔案 (~/.ssh/id_rsa
、.ssh/id_dsa
、~/.ssh/id_ecdsa
、~/.ssh/id_ed25519
和 ~/.ssh/identity
)。如果您想要指定金鑰,只需在命令後附加其路徑即可。
在 Windows 和 Linux 上,您可能會因為 agent 未執行而收到錯誤訊息 (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 Agent,方法是在終端機中執行下列命令
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
在最後一行,將 <您的 ssh 金鑰>
替換為您的特定 ssh 金鑰。
例如 ssh-add $HOME/.ssh/id_ed25519 2> /dev/null
如果您遇到任何問題,您可能需要查看開發容器擴充功能的已知限制。
共用 GPG 金鑰
如果您想要使用 GPG 簽署您的提交,您也可以與您的容器共用您的本機金鑰。您可以在 GitHub 的文件中找到有關使用 GPG 金鑰簽署的資訊。
如果您未設定 GPG,您可以為您的平台設定它
- 在 Windows 上,您可以安裝 Gpg4win。
- 在 macOS 上,您可以安裝 GPG Tools。
- 在 Linux 上,請在本機使用您系統的套件管理員安裝
gnupg2
套件。 - 在 WSL 上
- 在 Windows 端安裝 Gpg4win。
- 在您的 WSL 發行版中安裝
gpg
。sudo apt install gpg
- 在您的 WSL 發行版中註冊
pinentry
GUI。echo pinentry-program /mnt/c/Program\ Files\ \(x86\)/Gpg4win/bin/pinentry.exe > ~/.gnupg/gpg-agent.conf
- 在 WSL 中重新載入
gpg
agent。gpg-connect-agent reloadagent /bye
注意:對於 Windows 使用者,gpg 簽署金鑰必須使用 Windows GUI 或 CLI (powershell/cmd) 而不是 Git Bash 進行設定。開發容器無法存取在 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
) 執行開發容器:重建容器來執行此操作。下次容器啟動時,您的 GPG 金鑰也應該可以在容器內部存取。
注意:如果您先前在容器中使用過
gpg
,您可能需要執行開發容器:重建容器才能使更新生效。