기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
AWS CodeCommit에 대한 보안 인증 도우미 및 HTTPS 연결 문제 해결
다음 정보는 AWS CLI 및 HTTPS에 포함된 보안 인증 도우미를 사용하여 CodeCommit 리포지토리에 연결할 때 일반적인 문제를 해결하는 데 도움이 될 수 있습니다.
참고
보안 인증 도우미는 페더더레이션 액세스, ID 공급자 또는 임시 보안 인증 정보를 사용하여 CodeCommit에 연결하는 데 지원되는 방법이지만 git-remote-codecommit 유틸리티를 설치하고 사용하는 것이 좋습니다. 자세한 내용은 git-remote-codecommit을 사용하여 AWS CodeCommit에 대한 HTTPS 연결을 위한 설정 단계 섹션을 참조하세요.
주제
보안 인증 도우미를 구성하는 git config
명령을 실행할 때 오류가 발생합니다.
문제: git config 명령을 실행하여 CodeCommit 리포지토리와 통신하도록 보안 인증 도우미를 구성하려고 하면, 인수가 너무 적다는 오류가 표시되거나 Git config 명령 및 구문을 제안하는 사용 프롬프트가 표시됩니다.
가능한 해결 방법: 이 오류가 발생하는 가장 일반적인 이유는 Windows 운영 체제의 명령어에 작은따옴표가 사용되거나 Linux, macOS, Unix 운영 체제의 명령어에 큰따옴표가 사용되기 때문입니다. 정확한 구문은 다음과 같습니다.
Windows:
git config --global credential.helper "!aws codecommit credential-helper $@"
Linux, macOS, Unix:
git config --global credential.helper '!aws codecommit credential-helper $@'
보안 인증 도우미를 사용할 때 Windows에서 명령을 찾을 수 없음 오류가 발생합니다.
문제: AWS CLI를 업데이트한 후에는, CodeCommit 리포지토리에 대한 보안 인증 도우미 연결이 aws codecommit credential-helper $@ get: aws: command not
found
로 인해 실패합니다.
원인: 이러한 오류의 가장 일반적인 원인은 AWS CLI 버전이 Python 3를 사용하는 버전으로 업데이트되었기 때문입니다. MSI 패키지에 알려진 문제가 있습니다. 영향받는 버전 중 하나가 있는지 확인하려면, 명령줄을 열고 aws --version
명령을 실행합니다.
결과 Python 버전이 3으로 시작한다면, 영향을 받은 버전이 있는 것입니다. 예:
aws-cli/1.16.62 Python/3.6.2 Darwin/16.7.0 botocore/1.12.52
수정 방법: 다음 중 하나를 수해하여 이러한 문제를 해결할 수 있습니다.
-
MSI 대신 Python 및 pip를 사용하여 Windows에서 AWS CLI를 설치하고 구성합니다. 자세한 내용은 Windows에서 Python, pip 및 AWS CLI 설치 단원을 참조하십시오.
-
.gitconfig
파일을 수동으로 편집함으로써[credential]
섹션을 변경하여 로컬 컴퓨터에서aws.cmd
를 명시적으로 가리킵니다. 예:[credential] helper = !"\C:\\Program Files\\Amazon\\AWSCLI\\bin\\aws.cmd\" codecommit credential-helper $@ UseHttpPath = true
-
git config 명령의 실행을 통해
.gitconfig
파일을 업데이트하여aws.cmd
를 명시적으로 참조하고 PATH 환경 변수를 수동으로 업데이트하여 필요한 명령에 대한 경로를 포함시킵니다. 예:git config --global credential.helper "!aws.cmd codecommit credential-helper $@" git config --global credential.UseHttpPath true
CodeCommit 리포지토리에 연결할 때 사용자 이름을 묻는 메시지가 표시됩니다.
문제: 보안 인증 도우미를 사용해 CodeCommit 리포지토리와 통신을 시도할 때, 사용자 이름을 묻는 메시지가 나타납니다.
수정 방법: AWS 프로필을 구성하거나, 사용 중인 프로필이 CodeCommit 작업에 맞게 구성된 프로필인지 확인하세요. 설정에 대한 자세한 내용은 AWS CLI 보안 인증 도우미를 사용하여 Linux, macOS, Unix에서 AWS CodeCommit 리포지토리에 대한 HTTPS 연결을 설정하는 단계 또는 AWS CLI 보안 인증 도우미를 사용하여 Windows에서 AWS CodeCommit 리포지토리에 대한 HTTPS 연결 설정 단계 단원을 참조하세요. IAM, 액세스 키, 보안 키에 등에 대한 자세한 내용은 IAM 사용자의 액세스 키 관리 및 보안 인증 정보를 얻는 방법을 참조하세요.
macOS용 Git: 보안 인증 도우미를 성공적으로 구성했지만 현재 내 리포지토리에 액세스가 거부되었습니다(403).
문제: macOS에서 보안 인증 도우미가 예상대로 보안 인증 정보를 사용 또는 액세스하지 않은 것 같습니다. 이는 다음과 같은 두 가지 문제로 인해 발생할 수 있습니다.
-
AWS CLI가 리포지토리가 위치한 곳과 다른 AWS 리전에 대해 구성되어 있습니다.
-
Keychain Access 유틸리티가 만료된 보안 인증 정보를 저장했습니다.
수정 방법: AWS CLI가 올바른 리전으로 구성되었는지 확인하려면 aws configure 명령을 실행하고 표시된 정보를 검토합니다. CodeCommit 리포지토리가 AWS CLI에 대해 표시된 것과 다른 AWS 리전에 있는 경우, aws configure 명령을 실행하고 해당 리전에 적합한 값으로 변경해야 합니다. 자세한 내용은 1단계: CodeCommit에 대한 초기 구성 섹션을 참조하세요.
OS X 및 macOS에 출시된 Git의 기본 버전은 Keychain Access 유틸리티를 사용하여 생성된 보안 인증 정보를 저장합니다. 보안상의 이유로 CodeCommit 리포지토리에 액세스하기 위해 생성된 암호는 임시 암호이므로, 키체인에 저장된 보안 인증 정보는 약 15분 후에 작동을 멈춥니다. CodeCommit으로 Git 액세스만 하는 경우 다음을 시도합니다.
-
터미널에서 git config 명령을 실행하여 Keychain Access 유틸리티가 정의된 Git 구성 파일(
gitconfig
)을 찾습니다. 로컬 시스템과 기본 설정에 따라서gitconfig
파일을 하나 이상 가질 수 있습니다.git config -l --show-origin | grep credential
이 명령의 출력에서 다음과 유사한 결과를 검색합니다.
file:/
path
/to
/gitconfig credential.helper=osxkeychain이 줄의 시작 부분에 나열된 파일이 편집 대상인 Git 구성 파일입니다.
-
Git 구성 파일을 편집하려면 평문 편집기를 사용하거나 다음 명령을 실행합니다.
nano /usr/local/git/etc/gitconfig
-
다음 전략 중 하나를 사용하여 구성을 수정합니다.
-
helper = osxkeychain
을 포함하는 보안 인증 정보 섹션을 주석 처리하거나 삭제합니다. 예:# helper = osxkeychain
-
컨텍스트가 포함되도록
aws credential helper
및osxkeychain
보안 인증 도우미를 모두 업데이트합니다. 예를 들어,osxkeychain
이 GitHub를 인증하는 데 사용되는 경우에는 다음과 같습니다.[credential "https://git-codecommit.us-east-1.amazonaws\.com"] helper = !aws --profile CodeCommitProfile codecommit credential-helper $@ UseHttpPath = true [credential "https://github.com"] helper = osxkeychain
이 구성에서 Git은 원격 호스트가 ‘
https://github.com
’과 일치하면osxkeychain
도우미를 사용하고 원격 호스트가 ‘https://git-codecommit\.us-east-1\.amazonaws.com
’과 일치하면 보안 인증 도우미를 사용합니다. -
보안 인증 도우미 앞에 빈 문자열 도우미를 포함시킵니다. 예:
[credential] helper = helper = !aws --profile CodeCommitProfile codecommit credential-helper $@ UseHttpPath = true
Keychain Access 유틸리티를 계속 이용해 다른 Git 리포지토리의 보안 인증 정보를 캐시하고 싶다면, 명령줄을 코멘트 아웃하는 대신 헤더를 수정해야 합니다. 예를 들어 캐시된 보안 인증 정보를 GitHub에서 허용하고 싶다면, 헤더를 다음과 같이 수정해야 합니다.
[credential "https://github.com"] helper = osxkeychain
-
Git으로 다른 리포지토리에 액세스한다면, CodeCommit 리포지토리에 필요한 보안 인증 정보를 제공하지 않도록 Keychain Access 유틸리티를 구성할 수 있습니다. Keychain Access 유틸리티를 구성하려면 다음을 수행하십시오.
-
Keychain Access 유틸리티를 실행합니다. (Finder를 사용하여 이 유틸리티를 찾을 수 있습니다.)
-
git-codecommit.
을 검색하고us-east-2
.amazonaws.comus-east-2
를 리포지토리자 있는 AWS 리전으로 바꿉니다. 행을 강조 표시하고 마우스 오른쪽 버튼을 클릭하여 컨텍스트 메뉴를 연 다음 정보 가져오기를 선택합니다. -
액세스 제어 탭을 선택합니다.
-
액세스 허용 전 확인에서
git-credential-osxkeychain
을 선택한 후 마이너스 기호를 선택하여 목록에서 제거합니다.참고
목록에서
git-credential-osxkeychain
을 제거하면 Git 명령을 실행할 때마다 대화 상자가 나타납니다. 거부를 선택하여 계속 진행합니다. 팝업이 너무 많이 나타나는 경우 다음과 같이 몇 가지 대체 옵션이 있습니다.-
HTTPS를 통한 보안 인증 도우미 대신 SSH나 Git 보안 인증 정보를 사용하여 CodeCommit에 연결합니다. 자세한 정보는 Linux, macOS, Unix에서 SSH 연결 및 Git 보안 인증 정보를 사용하는 HTTPS 사용자를 위한 설정 섹션을 참조하세요.
-
Keychain Access 유틸리티 내,
git-codecommit.us-east-2.amazonaws.com
에 대한 액세스 제어 탭에서 모든 애플리케이션이 이 항목에 액세스하도록 허용(이 항목에 대한 액세스는 제한되지 않음) 옵션을 선택합니다. 이렇게 하면 팝업이 표시되지 않지만 자격 증명은 결국 만료되며(평균 약 15분 소요) 그 다음에는 403 오류 메시지가 표시됩니다. 이 경우 기능을 복원하려면 키체인 항목을 삭제해야 합니다. -
키 체인을 사용하도록 기본 설정되어 있지 않은 Git 버전을 설치합니다.
-
Keychain 항목을 삭제하기 위한 스크립팅 솔루션을 고려합니다. 커뮤니티에서 생성한 스크립트 솔루션의 샘플을 열람하려면, 제품 및 서비스 통합 섹션에서 OS X 인증서 저장소에 있는 캐시된 보안 인증 정보를 주기적으로 삭제하는 Mac OS X 스크립트를 참조하세요.
-
Git이 Keychain Access 유틸리티를 아예 사용하지 못하도록 하려면 보안 인증 도우미로 'osxkeychain'을 사용하지 않도록 Git을 구성할 수 있습니다. 예를 들어 터미널을 열고 git config --system credential.helper
명령을 실행해 osxkeychain
이 반환되면 Keychain Access 유틸리티를 사용하도록 Git가 설정됩니다. 다음 명령을 실행하여 이를 변경할 수 있습니다.
git config --system --unset credential.helper
주의하세요. --system
옵션을 사용하여 이 명령을 실행하면 모든 사용자에 대해 시스템 전체의 Git 동작이 변경되며, 이에 따라 CodeCommit 외에 다른 리포지토리 서비스를 사용 중인 경우에는 다른 리포지토리에 의도치 않은 결과가 초래될 수 있습니다. 또한 이 방법은 sudo
사용이 필요할 수 있으며, 이 변경을 적용하기에 충분한 권한이 계정에 없을 수 있다는 점에 유의하십시오. git config --system credential.helper
명령을 다시 실행하여 명령이 성공적으로 적용되었는지 확인하십시오. 자세한 내용은 Git 사용자 지정 - Git 구성
Windows용 Git: Windows용 Git을 설치했지만 내 리포지토리에 액세스가 거부되었습니다(403).
문제: Windows에서 보안 인증 도우미가 필요한 보안 인증 정보를 사용 또는 액세스하지 않은 것 같습니다. 이는 다음과 같은 다른 문제로 인해 발생할 수 있습니다.
-
AWS CLI가 리포지토리가 위치한 곳과 다른 AWS 리전에 대해 구성되어 있습니다.
-
기본적으로 Windows용 Git은 AWS 보안 인증 도우미를 사용하는 CodeCommit 연결과 호환되지 않는 Git 보안 인증 정보 관리자 유틸리티를 설치합니다. 이 유틸리티가 설치되면 AWS CLI와 함께 보안 인증 도우미가 설치되고 CodeCommit과의 연결이 구성되었더라도 리포지토리와의 연결이 실패하게 됩니다.
-
Windows용 Git의 일부 버전은 RFC 2617
및 RFC 4559 를 완전히 준수하지 않을 수 있으며, 잠재적으로 AWS CLI와 함께 포함된 Git 보안 인증 정보 및 보안 인증 도우미 모두에 대해 문제를 발생시킬 수 있습니다. 자세한 내용은 Version 2.11.0(3) does not ask for username/password 를 참조하세요.
수정 방법:
-
AWS CLI와 함께 포함된 보안 인증 도우미를 사용하려는 경우 보안 인증 도우미를 사용하는 대신 HTTPS를 통해 Git 보안 인증 정보로 연결하십시오. IAM 사용자에게 구성된 Git 보안 인증 정보는 AWS CodeCommit의 보안 인증 도우미와 달리 Windows용 Git 보안 인증 정보 관리자와 호환 가능합니다. 자세한 내용은 Git 보안 인증 정보를 사용하는 HTTPS 사용자의 경우 섹션을 참조하세요.
보안 인증 도우미를 사용하여 AWS CLI가 올바른 AWS 리전에 대해 구성되었는지 확인하려면 aws configure 명령을 실행하고 표시된 정보를 검토합니다. CodeCommit 리포지토리가 AWS CLI에 대해 표시된 것과 다른 AWS 리전에 있는 경우, aws configure 명령을 실행하고 해당 리전에 적합한 값으로 변경해야 합니다. 자세한 내용은 1단계: CodeCommit에 대한 초기 구성 섹션을 참조하세요.
-
가능한 경우 Windows용 Git을 제거하고 다시 설치합니다. Windows용 Git을 설치할 때 Git Credential Manager 유틸리티 설치 옵션의 확인란 선택을 취소합니다. 이 보안 인증 정보 관리자는 AWS CodeCommit의 보안 인증 도우미와 호환되지 않습니다. Git 보안 인증 정보 관리자 또는 다른 보안 인증 정보 관리 유틸리티를 설치하고 제거하지 않으려는 경우, 다음과 같이
.gitconfig
파일을 수정하고 CodeCommit의 보안 인증 정보 관리를 추가할 수 있습니다.-
제어판을 열고 보안 인증 정보 관리자를 선택한 다음 저장된 모든 CodeCommit의 보안 인증 정보를 제거합니다.
-
메모장과 같은 평문 편집기에서
.gitconfig
파일을 엽니다.참고
여러 Git 프로필을 사용하는 경우 로컬 및 글로벌
.gitconfig
파일을 둘 다 가질 수 있습니다. 적합한 파일을 편집해야 합니다. -
다음 섹션을
.gitconfig
파일에 추가합니다.[credential "https://git-codecommit.*.amazonaws.com"] helper = !aws codecommit credential-helper $@ UseHttpPath = true
-
파일을 저장한 다음 새 명령줄 세션을 연 후 연결을 다시 시도합니다.
CodeCommit 리포지토리 및 다른 보안 인증 정보 관리 시스템(GitHub 리포지토리 등 호스팅된 다른 리포지토리에 연결할 경우)에 연결할 때 AWS CodeCommit의 보안 인증 도우미를 사용하려는 경우에도 이 방법을 사용할 수 있습니다.
보안 인증 도우미가 기본값으로 사용되도록 재설정하려면 git config 명령을 실행할 때 --global 또는 --local 대신 --system 옵션을 사용할 수 있습니다.
-
-
Windows 컴퓨터에서 Git 보안 인증 정보를 사용하는 경우 연결 문자열의 일부로 Git 보안 인증 정보 사용자 이름을 포함하여 RFC 미준수 문제를 해결할 수 있습니다. 예를 들어, 이 문제를 해결하고 미국 동부(오하이오) 리전에서
MyDemorepo
라는 리포지토리를 복제하려면 다음과 같이 합니다.git clone https://
Your-Git-Credential-Username
@git-codecommit.us-east-2.amazonaws.com/v1/repos/MyDemoRepo
my-demo-repo참고
Git 보안 인증 정보 사용자 이름에
@
문자가 있는 경우, 이 방법은 효과가 없습니다. 문자에 대해 URL 인코딩(URL 이스케이프 또는 퍼센트 인코딩이라고도 함)을 수행해야 합니다.