이 출시되었습니다! 11월의 새로운 기능 및 수정 사항을 읽어보세요.

컨테이너와 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 배포판에 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 서명 키는 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를 실행해야 할 수 있습니다.

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