리포지토리에 대한 codespace를 만들 때 일반적으로 git pull
과 git push
를 사용하여 추가 인증 없이 해당 리포지토리에 변경사항을 끌어다 놓을 수 있습니다. 그러나 경우에 따라 이러한 작업을 실행하려고 할 때 인증 오류가 표시 될 수 있습니다.
codespace를 만든 리포지토리가 아닌 다른 리포지토리와 상호 작용하려는 경우에도 오류가 발생할 수 있습니다.
codespace를 만든 리포지토리에 인증
codespace를 만든 리포지토리로 푸시하거나 끌어오려고 하지만 인증이 실패하는 경우 git@github.com: Permission denied (publickey)
또는 Host key verification failed
와 같은 오류가 표시 될 수 있습니다.
GitHub Codespaces와 함께 dot 파일 리포지토리를 사용하고 데이터를 원격 리포지토리 전송하기 위해 HTTPS 이외의 프로토콜을 사용하도록 Git을 구성한 경우 이러한 오류가 표시될 수 있습니다. 예를 들어 dotfiles의 구성 파일에 다음과 같은 줄을 포함하여 SSH를 사용하도록 Git을 구성했을 수 있습니다.
[url "git@github.com:"]
insteadOf = https://github.com/
GitHub Codespaces은(는) 기본적으로 HTTPS 프로토콜을 사용하며 , codespace를 만든 리포지토리에 대한 읽기 및 쓰기 권한으로 구성된 GITHUB_TOKEN
로 인증합니다. codespace에서 기본 HTTPS 및 GITHUB_TOKEN
을 사용하는 것이 좋습니다. GITHUB_TOKEN
의 권한은 일반적으로 최소 권한의 보안 원칙에 따라 하나의 리포지토리로 제한됩니다. SSH 인증에는 세분화된 리포지토리 권한이 없으므로 실수로 SSH 키를 노출하면 다른 사용자가 모든 리포지토리에 액세스할 수 있습니다.
기본 HTTPS를 사용하려면 dot 파일에서 충돌하는 구성을 제거합니다. dot 파일 리포지토리에 install.sh
과 같은 인식된 파일에 설치 스크립트가 포함된 경우 다음과 같은 논리를 사용하여 codespace에서 구성을 제외할 수 있습니다.
if [ -z "$CODESPACES" ]; then
git config --global url."git@github.com".insteadOf "https://github.com"
fi
신뢰할 수 있는 리포지토리에서 만든 codespace에서 SSH를 사용해야 하는 경우 GitHub 계정에 연결된 SSH 키로 인증하도록 codespace가 설정되어 있는지 확인합니다. 자세한 내용은 "새 SSH 키 생성 및 ssh-agent에 추가"을(를) 참조하세요.
codespace를 만들지 않은 리포지토리에 인증
codespace의 GITHUB_TOKEN
은 codespace를 만든 리포지토리에 대한 읽기 및 쓰기 액세스 권한으로 구성됩니다. 기본적으로 토큰은 다른 리포지토리에 액세스할 수 없습니다. 리포지토리를 복제할 수 없거나 복제한 리포지토리로 푸시할 수 없습니다.
codespace에서 GITHUB_TOKEN
값을 수동으로 업데이트하지 않는 것이 좋습니다. 프로젝트에 다른 리포지토리에 대한 액세스 권한이 필요한 경우 개발 컨테이너 구성에 추가 권한을 나열하여 codespace에 이러한 리포지토리에 대한 액세스 권한을 부여할 수 있습니다. 이렇게 하면 사용자가 codespace를 만들 때 추가 권한을 부여할 수 있습니다. 그러나 기존 codespace의 사용 권한은 변경되지 않습니다. 자세한 내용은 "Codespace 내의 다른 리포지토리에 대한 액세스 관리"을(를) 참조하세요.
기존 codespace의 다른 리포지토리에 액세스해야 하거나 필요한 권한이 사용자 고유이고 다른 기여자 적용되지 않는 경우 리포지토리에 대한 액세스 권한이 있는 personal access token을(를) 만들고 codespace에 토큰을 추가할 수 있습니다. fine-grained personal access token을(를) 사용하고, 액세스가 필요한 리포지토리만 선택하고, 콘텐츠 권한에 필요한 액세스 권한만 부여하여 토큰의 액세스를 제한하는 것이 좋습니다. 자세한 내용은 "개인용 액세스 토큰 관리"을(를) 참조하세요.
그런 다음 토큰을 codespace에서 환경 변수로 추가하거나 GitHub Codespaces에 대한 비밀로 추가할 수 있습니다. 비밀을 만드는 경우 신뢰할 수 있는 특정 리포지토리만 비밀에 액세스하도록 허용해야 합니다. 새 비밀을 추가하면 기존 코드 영역을 다시 로드하여 새 비밀을 가져오라는 메시지가 표시됩니다. 자세한 내용은 "GitHub Codespaces에 대한 계정별 비밀 관리"을(를) 참조하세요.
토큰을 사용하여 codespace에서 인증하려면 다음 옵션이 있습니다.
-
환경 변수 또는 비밀을 만들 때
GH_TOKEN
이라는 이름을 사용할 수 있습니다.GH_TOKEN
변수는 GitHub CLI 작업에서 기본적으로 사용되므로gh repo clone OWNER/REPO
명령을 사용하여 리포지토리를 복제할 수 있습니다.그러나
git push
을 사용하여 리포지토리에 푸시 하려고 하면 Git의 자격 증명 도우미 인증에 기존GITHUB_TOKEN
를 사용 하려고 시도하여 인증이 실패합니다. 도우미를 재정의할 수 있지만 codespace를 만든 원래 리포지토리와 상호 작용하려고 할 때 마찰이 발생할 수 있습니다. -
액세스 토큰을 포함하는 URL을 사용하여 리포지토리를 복제할 수 있습니다.
YOUR-VARIABLE
을 만든 환경 변수 또는 비밀의 이름으로 바꿉니다.git clone https://USERNAME:$YOUR-VARIABLE@github.com/OWNER/REPO`
이렇게 하면 특정 리포지토리에 대한 액세스 토큰이 저장되므로 기존 자격 증명 도우미를 재정의하지 않고도 리포지토리로 푸시 및 끌어올 수 있습니다.
참고: 이러한 방식으로 복제하면 토큰이 Git 구성에 표시됩니다. 신뢰할 수 있는 리포지토리에서 만든 codespace에서 작업할 때만 이 메서드를 사용해야 하며, 액세스 토큰의 범위를 최대한 제한해야 합니다.