Skip to main content

GitHub Codespaces에 대한 GPG 검증 문제 해결

이 문서는 Codespaces 커밋 서명 오류 문제 해결을 제공합니다.

GPG 검증을 사용하도록 설정하면 GitHub Codespaces이(가) 선택한 리포지토리에서 만든 Codespaces에서 커밋에 자동으로 서명됩니다. 자세한 내용은 "GitHub Codespaces 관련 GPG 확인 관리"을(를) 참조하세요.

GPG 검증을 사용하도록 설정하면 관련 리포지토리에서 만든 새 codespace에서 자동으로 적용됩니다. 기존 활성 codespace에서 GPG 검증을 적용하려면 codespace를 중지하고 다시 시작해야 합니다. 자세한 내용은 "Codespace 중지 및 시작"을(를) 참조하세요.

GitHub Codespaces이(가) 커밋에 서명하지 못한 경우 명령줄 또는 Visual Studio Code 팝업 창에 오류 메시지 gpg failed to sign the data이 표시되었을 수 있습니다.

이 문서의 다음 섹션에서는 이 오류의 일반적인 원인에 대한 문제 해결 조언을 제공합니다.

  • 이전에 GitHub Codespaces에 대한 설정에서 GPG 검증을 사용하도록 설정했으며 최근에 GPG 확인을 사용하지 않도록 설정했거나 신뢰할 수 있는 리포지토리 목록에서 리포지토리를 제거한 경우 Git에서 커밋에 서명하려고 할 수 있습니다. 자세한 내용은 "GPG 검증을 사용하지 않도록 설정 후 오류"를 참조하세요.
  • Codespace GPG 검증을 사용하는 경우 커밋에 서명하는 데 필요한 Git 구성을 재정의했을 수 있습니다. 자세한 내용은 "Git 구성 충돌로 인한 오류"를 참조하세요.
  • Codespace GPG 검증을 사용하지 않도록 설정되어 있고 VS Code의 "소스 제어" 보기에서 커밋하려고 할 때 오류가 발생하는 경우 VS Code 설정 때문일 수 있습니다. 자세한 내용은 "VS Code "소스 제어" 보기의 오류"를 참조하세요.

GPG 검증을 사용하지 않도록 설정 한 후 오류

GPG 검증을 사용하도록 설정하면 GitHub Codespaces은(는) 기본적으로 Codespaces에서 만드는 모든 커밋에 서명합니다. commit.gpgsign Git 구성 값을 true로 설정하여 수행합니다.

GPG 검증을 사용하지 않도록 설정하고 기존 코드 영역에서 작업하는 경우 이 값은 계속 true으로 설정됩니다. 즉, GitHub Codespaces은(는) 커밋에 서명하려고 해도 GPG 검증 설정을 사용하지 않도록 설정했으므로 서명할 수 없습니다.

Codespace에서 서명되지 않은 일반 커밋을 계속하려면 터미널에 다음 명령을 입력하여 commit.gpgsign를 기본값 false 으로 다시 설정합니다.

Shell
git config --unset commit.gpgsign

구성에서 값이 올바르게 제거되었는지 확인하려면 git config --list을 입력하세요. 목록에 commit.gpgsign 값이 표시되지 않아야 합니다.

Git 구성 충돌로 인한 오류

GitHub Codespaces은(는) 커밋에 자동으로 서명하기 위해 Codaspace에서 특정 Git 구성 값을 설정합니다. GitHub Codespaces에 의해 설정된 값을 재정의하는 경우 커밋에 서명할 수 없습니다.

GitHub Codespaces을(를) Git 구성 파일이 포함된 dot 파일 리포지토리와 연결한 경우 실수로 이러한 값을 재정의할 수 있습니다. 자세한 내용은 GitHub Codespaces에 dot 파일을 사용하는 방법에 대한 자세한 내용은 "계정에 맞게 GitHub Codespaces 개인 설정"를 참조하세요.

충돌하는 구성 확인

GPG를 사용하여 커밋에 서명하려면 GitHub Codespaces은(는) 시스템 수준에서 다음 Git 구성 값을 자동으로 설정합니다.

구성 설정필수 값
user.nameGitHub 프로필에 설정된 전체 이름과 일치해야 합니다.
credential.helper/.codespaces/bin/gitcredential_github.sh로 설정해야 합니다.
gpg.program/.codespaces/bin/gh-gpgsign로 설정해야 합니다.

이러한 값이 codespace에서 올바르게 설정되었는지 확인하려면 git config --list --show-origin 명령을 사용하세요. GitHub Codespaces은(는) 시스템 수준에서 이 구성을 설정하므로 필요한 구성 설정은 /usr/local/etc/gitconfig에서 가져옵니다.

$ git config --list --show-origin
file:/usr/local/etc/gitconfig   credential.helper=/.codespaces/bin/gitcredential_github.sh
file:/usr/local/etc/gitconfig   user.name=Mona Lisa
file:/usr/local/etc/gitconfig   gpg.program=/.codespaces/bin/gh-gpgsign

위에 나열된 값 외에도 codespace에서 사용되는 dot 파일에 다음 값이 포함된 경우 오류가 발생할 수 있습니다.

  • user.signingkey Git 구성 값
  • commit.gpgsign Git 구성 값
  • 수동 세트 GITHUB_TOKEN

충돌하는 구성 제거

GitHub Codespaces에 대한 자동 GPG 검증을 사용하도록 설정하려면 codespaces에 사용되는 dot 파일에서 충돌하는 구성을 제거해야 합니다.

예를 들어 로컬 컴퓨터의 전역 .gitconfig 파일에 gpg.program 값이 포함되어 있고 GitHub Codespaces과(와) 연결된 dot 파일 리포지토리에 이 파일을 푸시한 경우 이 파일에서 gpg.program을 제거하고 로컬 컴퓨터의 시스템 수준으로 설정하는 것이 좋습니다.

참고: dot 파일 리포지토리에 대한 변경 내용은 만든 새 codespaces에 적용되지만 기존 codespaces에는 적용되지 않습니다.

  1. 로컬 컴퓨터에서 터미널을 엽니다.

  2. ~/.gitconfig (Mac/Linux) 또는 C:\Users\YOUR-USER\.gitconfig (Windows)에서 충돌하는 값을 제거하려면 git config --global --unset 명령을 사용합니다.

    git config --global --unset gpg.program
    
  3. GitHub의 dot 파일에 변경 내용을 푸시합니다.

  4. 필요에 따라 로컬 구성을 유지하려면 dot 파일 리포지토리에 푸시하지 않는 Git 구성 파일에서 값을 다시 설정합니다.

    예를 들어 --system 플래그를 사용하여 시스템 수준 파일에서 구성을 PATH/etc/gitconfig로 설정할 수 있습니다. 여기서 PATH은 Git가 시스템에 설치된 디렉터리입니다.

    git config --system gpg.program gpg2
    

또는 dot 파일일 리포지토리에 install.sh와 같은 인식된 파일에 설치 스크립트가 포함된 경우 $CODESPACES 환경 변수를 사용하여 codespace에 없는 경우에 gpg.program만 설정하는 등의 조건부 논리를 추가할 수 있습니다. 다음 예제에서 codespace에 없는 경우를 -z "$CODESPACES"true를 반환합니다.

Shell
if [ -z "$CODESPACES" ]; then
  git config --global gpg.program gpg2
fi

VS Code "소스 제어" 보기의 오류

GitHub Codespaces에 대한 설정에서 GPG 검증을 사용하지 않도록 설정하거나 codespace를 만든 리포지토리가 신뢰할 수 있는 리포지토리 목록에 없으면 Git에서 커밋에 서명하지 않아야 합니다. VS Code의 "소스 제어" 보기에서 커밋하려고 할 때 서명 오류가 발생하는 경우 codespace에서 VS Code 설정을 검사 합니다.

  1. 창의 왼쪽 아래 모서리에서 를 선택하고 설정을 클릭합니다.

    VS Code 웹 클라이언트 섹션의 스크린샷 메뉴의 기어 아이콘과 "설정" 옵션은 모두 주황색 윤곽선으로 강조 표시됩니다.

  2. "사용자" 탭의 검색 창에서 "gpg"를 검색합니다.

  3. "GPG 또는 X.509로 커밋 서명 사용" 설정이 선택 취소되었는지 확인합니다.

    "사용자" 설정 탭의 스크린샷 "GPG 또는 X.509로 커밋 서명 사용"이라는 레이블이 지정된 선택 취소된 검사 상자가 주황색 윤곽선으로 강조 표시됩니다.

이 설정이 사용하도록 설정된 경우 검사 상자를 선택 취소하여 VS Code에서 커밋에 서명하려고 시도하거나, 커밋에 성공적으로 서명할 수 있도록 작업 중인 리포지토리에 대해 GPG 검증을 사용하도록 설정해야 합니다.

VS Code 설정을 변경하는 경우 변경 내용을 만든 다른 codespace와 공유하려는 경우 설정 동기화가 사용하도록 설정되어 있는지 확인해야 합니다. 신뢰하는 리포지토리에서 만든 codespace에서만 설정 동기화를 켜야 합니다. 자세한 내용은 "계정에 맞게 GitHub Codespaces 개인 설정"을(를) 참조하세요.

추가 참고 자료