컨테이너와 Git 자격 증명 공유
Dev Containers 확장 프로그램은 컨테이너 내부에서 로컬 Git 자격 증명을 사용하기 위한 즉시 사용 가능한 지원을 제공합니다. 이 섹션에서는 지원되는 두 가지 옵션을 살펴보겠습니다.
로컬에 사용자 이름이나 이메일 주소가 설정되어 있지 않으면 해당 설정을 요청받을 수 있습니다. 다음 명령을 실행하여 로컬 컴퓨터에서 설정을 완료할 수 있습니다.
git config --global user.name "Your Name"
git config --global user.email "your.email@address"
확장 프로그램은 시작 시 로컬 .gitconfig 파일을 자동으로 컨테이너에 복사하므로 컨테이너 자체에서 이 작업을 수행할 필요가 없습니다.
자격 증명 도우미 사용
리포지토리를 복제할 때 HTTPS를 사용하고 로컬 OS에 자격 증명 도우미가 구성되어 있다면 추가 설정이 필요하지 않습니다. 로컬에서 입력한 자격 증명이 컨테이너에서 재사용되며 그 반대도 마찬가지입니다.
SSH 키 사용
자격 증명 도우미 대신 SSH 키를 사용하여 리포지토리를 복제하는 경우가 있습니다. 이 시나리오를 활성화하기 위해 확장 프로그램은 실행 중인 로컬 SSH 에이전트를 자동으로 전달합니다.
먼저 호스트에서 SSH 에이전트 전달이 활성화되어 있는지 확인해야 합니다. sshd_config(일반적으로 /etc/ssh/sshd_config 또는 %programdata%\ssh\sshd_config에 있음)에서 AllowAgentForwarding 옵션을 검색합니다. 아직 설정되지 않았다면 yes로 설정하고 sshd 서비스를 다시 로드하거나 다시 시작해야 합니다.
실행 중인 에이전트에 로컬 SSH 키를 추가하려면 ssh-add 명령을 사용할 수 있습니다. 예를 들어 터미널이나 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 서명을 하려면 로컬 키를 컨테이너와 공유할 수도 있습니다. GPG 키를 사용하여 서명하는 방법에 대한 자세한 내용은 GitHub 설명서에서 확인할 수 있습니다.
GPG가 설정되어 있지 않으면 플랫폼에 맞게 구성할 수 있습니다.
- Windows에서는 Gpg4win을 설치할 수 있습니다.
- macOS에서는 GPG Tools를 설치할 수 있습니다.
- Linux에서는 시스템 패키지 관리자를 사용하여 로컬에
gnupg2패키지를 설치합니다. - WSL에서
- Windows 측에 Gpg4win을 설치합니다.
- WSL 배포판에
gpg를 설치합니다.sudo apt install gpg - WSL 배포판에
pinentryGUI를 등록합니다.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 서명 키는 Git Bash가 아닌 Windows GUI 또는 CLI(powershell/cmd)를 사용하여 구성해야 합니다. Dev Container는
~/.gnupg/폴더에 있지만 Windows 탐색기에서 액세스할 수 있는 Git Bash에 설정된 gpg 키에 액세스할 수 없습니다.
다음으로 Dockerfile을 업데이트하여 컨테이너에 gnupg2를 설치합니다.
예를 들어,
RUN apt-get update && apt-get install gnupg2 -y
또는 루트가 아닌 사용자로 실행하는 경우
RUN sudo apt-get update && sudo apt-get install gnupg2 -y
구성 변경 사항을 적용하려면 컨테이너를 다시 빌드해야 합니다. 명령 팔레트(F1)에서 Dev Containers: Rebuild Container를 실행하여 이를 수행할 수 있습니다. 다음에 컨테이너가 시작될 때 GPG 키도 컨테이너 내부에서 액세스할 수 있습니다.
참고: 이전에 컨테이너에서
gpg를 사용한 경우 업데이트가 적용되도록 Dev Containers: Rebuild Container를 실행해야 할 수 있습니다.