本站点文档内容均翻译自code.visualstudio.com,仅供个人学习,如有差异请以官网为准。

与容器共享Git凭证

Dev Containers 扩展提供了在容器内使用本地 Git 凭据的支持。在本节中,我们将介绍两种支持的选项。

如果你的用户名或电子邮件地址没有在本地设置,你可能会被提示进行设置。你可以在你的本地机器上通过运行以下命令来完成:

git 配置 --全局 用户名 "你的名字"
git 配置 --全局 用户邮箱 "你的邮箱@地址"

该扩展将自动复制您的本地.gitconfig在启动时将文件放入容器中,因此您不应在容器本身中执行此操作。

使用凭据助手

如果你使用 HTTPS 克隆你的代码库,并且在你的本地操作系统中配置了凭证助手,则无需进一步设置。你本地输入的凭证将在容器中重复使用,反之亦然。

使用 SSH 密钥

有些情况下,您可能使用 SSH 密钥而不是凭据助手来克隆仓库。为了启用此场景,扩展将自动转发您的本地SSH 代理(如果正在运行)

首先,您应该确保 SSH 代理转发 已在 主机 上启用。搜索 允许代理转发在 sshd_config 中的选项(通常位于/etc/ssh/sshd_config%programdata%\ssh\sshd_config)。如果没有,请将其设置为并重新加载或重启sshd服务。

如果您正在使用该代理,您可以添加您的本地 SSH 密钥。ssh添加命令。例如,在终端或PowerShell中运行以下命令:

ssh添加

它将添加默认文件 (~/.ssh/id_rsa.ssh/id_dsa~/.ssh/id_ecdsa~/.ssh/id_ed25519,和~/.ssh/identity). 如果您想指定一个键,只需在命令后附加该路径。

在 Windows 和 Linux 上,您可能会因为代理未运行而收到错误(macOS 通常默认运行代理)。请按照以下步骤解决问题:

Windows

启动本地管理员PowerShell并运行以下命令:

# 确保你以管理员身份运行
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

如果您遇到任何问题,您可能需要检查Dev Containers扩展的已知限制

共享 GPG 密钥

如果你想 GPG 签署你的提交,你也可以将你的本地密钥共享给你的容器。你可以在 GitHub 的文档 中找到使用 GPG 密钥签署的更多信息。

如果你还没有设置GPG,你可以为你的平台进行配置:

  • Windows 上,你可以安装 Gpg4win
  • macOS 上,你可以安装 GPG Tools
  • Linux 上,本地 安装 gnupg2使用您的系统包管理器安装软件包。
  • WSL:
    • 安装Gpg4win在Windows侧。
    • 安装GPG在你的WSL发行版中。请将以下文本翻译成中文: sudo apt install gpg
    • 注册密码输入界面在你的WSL发行版中使用GUI。echo pinentry-program /mnt/c/Program\ Files\ \(x86\)/Gpg4win/bin/pinentry.exe > ~/.gnupg/gpg-agent.conf
    • 重新加载GPG在WSL中的代理。gpg-connect-agent 重新加载代理 /再见

注意:对于Windows用户,必须使用Windows图形用户界面或命令行界面(powershell/cmd)来配置gpg签名密钥,而不是在Git Bash中配置。即使开发容器在你的~/.gnupg/文件夹,在Windows资源管理器中可访问。

接下来,安装gnupg2通过更新你的Dockerfile来在你的容器中。

例如:

运行 apt-get update && apt-get install gnupg2 -y

或者以 非超级用户身份运行:

运行 sudo apt-get update && sudo apt-get install gnupg2 -y

要应用您的配置更改,您需要重新构建容器。您可以通过在命令面板中运行Dev Containers: 重新构建容器来实现这一点 (F1). 下次容器启动时,您的 GPG 密钥也应该可以在容器内部访问。

注意:如果您使用了GPG 之前在容器中,您可能需要运行 Dev Containers: 重新构建容器 以使更新生效。