이 문서에서는 Azure DevOps 리포지토리에 Git 복제 또는 Git 푸시 함수를 수행하려고 할 때 발생할 수 있는 문제에 대해 설명합니다.
적용 대상: Azure DevOps Services, Azure DevOps Server
Azure DevOps 리포지토리에 Git 복제 또는 Git 푸시를 수행하는 동안 발생하는 문제
GitHub에서 리포지토리를 복제하거나 푸시하려고 하면 프록시 구성, SSL 인증서 또는 자격 증명 캐시와 관련된 몇 가지 문제로 인해 Git 복제 작업이 실패할 수 있습니다.
문제 해결 검사 목록
이슈의 원인을 식별하려면 다음 단계를 수행합니다.
자세한 추적 을 사용하도록 설정하여 실행 중인 Git 명령에 대한 자세한 수준의 추적을 설정합니다.
다음 변수를 순서대로 설정하고 각 집합 변수에 대한 Git 명령을 실행하여 오류에 대한 자세한 정보를 가져옵니다.
GIT_TRACE=1
GIT_TRACE_PACKET=1
GIT_TRACE_CURL_NO_DATA=1
GIT_CURL_VERBOSE=1
이러한 변수에 대한 추적 집합 수준은 문제를 일으키는 오류에 대한 다음 예제와 유사한 추가 정보를 제공합니다.
Git 환경 변수에 대한 자세한 내용은 Git Internals - 환경 변수를 참조 하세요.
원인 1: Git이 프록시 서버를 통해 연결할 수 없음
프록시 서버를 사용하지만 Git 구성이 프록시 서버를 통해 연결되도록 설정되지 않은 경우 407 또는 502 오류 메시지가 표시될 수 있습니다. 이 문제는 프록시 서버를 통해 연결을 설정할 수 없고 "<your github url
>에 액세스할 수 없음" 또는 "호스트 github.com
을 확인할 수 없음"과 유사한 오류가 표시되는 경우에도 발생합니다.
해결 방법: 프록시 서버를 사용하도록 Git 구성
실행 git config --list
하여 시스템의 모든 Git 구성 목록을 가져오고 프록시 서버가 사용 중인지 확인합니다.
리포지토리 또는 시스템 루트와 같은 여러 구성 파일이 표시되면 명령을 실행 git config --list --show-origin
한 다음 Git에서 구성 정보를 검색하는 경로를 확인합니다.
구성 목록에서 프록시 서버를 찾을 수 없는 경우 명령을 실행 git config --global
하여 구성에서 프록시 서버를 설정합니다.
예들 들어 http.proxy http://proxyUsername:proxyPassword@proxy.server.com:port
입니다.
일부 URL에 특정 프록시를 사용하려면 다음 예제와 유사하게 http.<url\>.key notation:
Git 구성 하위 섹션에서 프록시 URL을 구성합니다.
git config --global
http.https://domain.com.proxy http://proxyUsername:proxyPassword@proxy.server.com:port
프록시가 사용하는 https
경우 위의 예제에서 프록시 URL을 사용하여 https
Git 구성을 설정합니다. 그렇지 않으면 다음을 유지합니다 http
.
Git 구성에 대한 자세한 내용은 Git 구성 설명서를 참조 하세요.
원인 2: Git은 로컬 자체 서명된 인증서를 사용합니다.
Git이 로컬 자체 서명된 인증서를 사용하는 경우 "SSL 인증서 문제: 로컬 발급자 인증서를 가져올 수 없습니다." 오류가 표시될 수 있습니다.
해결 방법 1: TLS/SSL 확인 사용 안 함
로컬 TFS(Team Foundation Server)를 설치했으며 Git에서 수행하는 TLS/SSL 확인을 사용하지 않도록 설정하려면 다음 명령을 실행합니다.
git config --global http.sslVerify false
솔루션 2: Git에서 자체 서명된 인증서 구성
Git에서 수행하는 TLS/SSL 확인을 계속하려면 다음 단계에 따라 로컬 Git에 루트 인증서를 추가합니다.
루트 인증서를 Base-64로 인코딩된 X.509()로 내보냅니다. CER) 파일은 다음 단계를 수행합니다.
Microsoft Edge 브라우저를 열고 주소 표시
https://<servername>/tfs
줄에 TFS 서버의 URL을 입력합니다.주소 표시줄에서 아이콘을
선택한 다음 연결 보안 링크를 선택합니다.
아이콘을
선택하여 인증 창을 엽니다.
인증 경로 탭에서 루트 인증서인 왼쪽 위 인증서를 선택합니다.
인증서 보기를 선택하여 루트 인증서에 대한 인증서 창을 엽니다.
[세부 정보] 탭에서 [파일로 복사]를 선택합니다.
인증서 내보내기 마법사에서 다음을 선택한 다음 Base-64로 인코딩된 X.509(를 선택합니다. CER) 내보낼 파일 형식입니다.
로컬 디스크에 루트 인증서를 저장합니다.
다음 단계에 따라 Git 인증서 저장소에 로컬 디렉터리를 사용하도록 Git을 구성합니다.
로컬 디스크의 C:\Program Files\Git\bin 경로로 이동한 다음 curl-ca-bundle.crt 파일의 복사본을 만듭니다 .
참고 항목
- 디바이스에 Windows용 Git(
msysgit
)을 설치하면 curl-ca-bundle.crt 파일이 Program Files 디렉터리에 저장됩니다. 이 파일은 Git에서 신뢰하는 모든 인증서를 포함하는 git.exe 대한 루트 인증서 저장소입니다. - 디바이스별로 저장하는 curl-ca-bundle.crt 파일은 로컬 Windows 클라이언트에 비공개입니다. 텍스트 파일에 UNIX(
\n
) 줄 끝 있습니다. - Windows 2.x용 Git 시리즈에서 경로는 C:\Program Files (x86)\Git\mingw32\ssl\certs\ca-bundle.crt 또는 C:\Program Files\Git\mingw64\ssl\certs\ca-bundle.crt로 변경됩니다. 32비트 Windows 클라이언트를 사용하는 경우 프로그램 파일 파트가 x86과 함께 표시되지 않도록 폴더 경로를 수정할 수 있습니다.
- 디바이스에 Windows용 Git(
curl-ca-bundle.crt 파일을 사용자 프로필 디렉터리(C:\Users\yourname>)에< 복사합니다. 또는 예제와 유사한 복사 명령을 실행합니다
copy "C:\Program Files (x86)\Git\bin\curl-ca-bundle.crt" C:\Users\<yourname>
.다음 명령을 실행하여 Windows 클라이언트에서 인증서 저장소의 로컬 복사본을 사용하도록 Git을 구성합니다.
git config --global http.sslCAInfo C:/Users/<yourname>/curl-ca-bundle.crt
다음 단계를 수행하여 내보낸 루트 인증서를 Git 인증서 저장소의 로컬 복사본에 추가합니다.
메모장에서 내보낸 루트 인증서를 연 다음 전체 내용을 클립보드에 복사합니다.
텍스트 편집기에서 C:/Users/yourname>/<curl-ca-bundle.crt 경로로 이동하여 curl-ca-bundle.crt 파일을 엽니다.
팁
unix2dos 도구를 사용하여 파일의 줄 끝 \n에서 \r\n으로 변경하고 메모장에서 파일을 열 수 있습니다.
끝에 루트 인증서에 대한 항목을 추가한 다음, 인증서 내용을 curl-ca-bundle.crt 파일에 붙여넣습니다 .
curl-ca-bundle.crt 파일을 저장합니다.
복제 작업을 수행하여 SSL 오류가 해결되었는지 확인합니다.
원인 3: 인증 오류 또는 자격 증명 캐시 문제
계정 이름 또는 도메인 암호가 변경되었거나 인증 오류가 발생한 경우 인증 및 자격 증명 캐시 문제가 있을 수 있습니다.
해결 방법: GCM(Git 자격 증명 관리자) 다시 설정
인증 오류 또는 자격 증명 캐시 문제를 해결하려면 먼저 문제 해결 검사 목록에 따라 오류 정보를 확인한 다음 다음 단계를 수행합니다.
- 명령을 실행한
git config --list
다음 GCM(Git 자격 증명 관리자)을 사용하고 있는지 확인합니다. 관리자로credential.helper
설정된 경우 GCM이 사용 중입니다. - 다음 단계에 따라 GCM을 다시 설정합니다.
git config --global --unset credential.helper
명령을 실행하여 GCM의 설정을 해제합니다.git config credential.helper manager
명령을 실행하여 GCM을 다시 설정합니다. 또는 다음 단계에 따라 자격 증명 캐시를 먼저 삭제합니다.- 설정되지 않은 경우 Windows 검색에서 자격 증명 관리자를 검색하고 열기를 선택한 다음 Git 리포지토리에 대한 자격 증명을 제거합니다.
- %localappdata%/GitCredentialManager 경로로 이동한 다음 tenant.cache 파일을 삭제합니다.
- 명령을 실행하여 GCM을
git config credential.helper manager
다시 설정합니다.
- 복제 작업을 수행하여 문제가 해결되었는지 확인합니다.
참고: Windows용 Git 버전에 따라 값이 credential.helper
달라집니다. 자세한 내용은 다음 표를 참조하세요.
Windows용 Git 버전 | Windows용 Git Credential Manager | Git Credential Manager Core | Git 자격 증명 관리자(GCM Core에서 이름 바꾸기) |
---|---|---|---|
2.27 이하 | manager |
||
2.28에서 2.33.0으로 | manager (선택 사항) |
manager-core (선택 사항) |
|
2.33.1에서 2.34.0으로 | manager-core |
||
2.34.1 ~ 2.38 | manager-core |
||
2.39 이상 | manager |