AWS CodeCommit에 대한 보안 인증 도우미 및 HTTPS 연결 문제 해결 - AWS CodeCommit

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

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 액세스만 하는 경우 다음을 시도합니다.

  1. 터미널에서 git config 명령을 실행하여 Keychain Access 유틸리티가 정의된 Git 구성 파일(gitconfig)을 찾습니다. 로컬 시스템과 기본 설정에 따라서 gitconfig 파일을 하나 이상 가질 수 있습니다.

    git config -l --show-origin | grep credential

    이 명령의 출력에서 다음과 유사한 결과를 검색합니다.

    file:/path/to/gitconfig credential.helper=osxkeychain

    이 줄의 시작 부분에 나열된 파일이 편집 대상인 Git 구성 파일입니다.

  2. Git 구성 파일을 편집하려면 평문 편집기를 사용하거나 다음 명령을 실행합니다.

    nano /usr/local/git/etc/gitconfig
  3. 다음 전략 중 하나를 사용하여 구성을 수정합니다.

    • helper = osxkeychain을 포함하는 보안 인증 정보 섹션을 주석 처리하거나 삭제합니다. 예:

      # helper = osxkeychain
    • 컨텍스트가 포함되도록 aws credential helperosxkeychain 보안 인증 도우미를 모두 업데이트합니다. 예를 들어, 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 유틸리티를 구성하려면 다음을 수행하십시오.

  1. Keychain Access 유틸리티를 실행합니다. (Finder를 사용하여 이 유틸리티를 찾을 수 있습니다.)

  2. git-codecommit.us-east-2.amazonaws.com을 검색하고 us-east-2를 리포지토리자 있는 AWS 리전으로 바꿉니다. 행을 강조 표시하고 마우스 오른쪽 버튼을 클릭하여 컨텍스트 메뉴를 연 다음 정보 가져오기를 선택합니다.

  3. 액세스 제어 탭을 선택합니다.

  4. 액세스 허용 전 확인에서 git-credential-osxkeychain을 선택한 후 마이너스 기호를 선택하여 목록에서 제거합니다.

    참고

    목록에서 git-credential-osxkeychain을 제거하면 Git 명령을 실행할 때마다 대화 상자가 나타납니다. 거부를 선택하여 계속 진행합니다. 팝업이 너무 많이 나타나는 경우 다음과 같이 몇 가지 대체 옵션이 있습니다.

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 2617RFC 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의 보안 인증 정보 관리를 추가할 수 있습니다.

    1. 제어판을 열고 보안 인증 정보 관리자를 선택한 다음 저장된 모든 CodeCommit의 보안 인증 정보를 제거합니다.

    2. 메모장과 같은 평문 편집기에서 .gitconfig 파일을 엽니다.

      참고

      여러 Git 프로필을 사용하는 경우 로컬 및 글로벌 .gitconfig 파일을 둘 다 가질 수 있습니다. 적합한 파일을 편집해야 합니다.

    3. 다음 섹션을 .gitconfig 파일에 추가합니다.

      [credential "https://git-codecommit.*.amazonaws.com"] helper = !aws codecommit credential-helper $@ UseHttpPath = true
    4. 파일을 저장한 다음 새 명령줄 세션을 연 후 연결을 다시 시도합니다.

    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 이스케이프 또는 퍼센트 인코딩이라고도 함)을 수행해야 합니다.