웹사이트 검색

HTTP(S) 인증을 위해 항상 사용자 자격 증명을 요구하는 Git 문제를 해결하는 방법


원격 Git 저장소에 액세스하거나 작업하려면 SSH 또는 HTTP(S) 프로토콜을 사용할 수 있습니다. 전자를 사용하면 개인 저장소의 경우 암호 없이 SSH 키를 간단히 구성할 수 있어 사용자 이름과 비밀번호를 입력하지 않고도 데이터를 안전하게 전송할 수 있습니다.

그러나 HTTP(S)를 사용하면 연결될 때마다 사용자 이름과 비밀번호를 입력하라는 메시지가 표시됩니다(Git이 특정 URL 컨텍스트에 대한 인증이 필요한 경우). Github 사용자는 이 사실을 잘 알고 있습니다.

이 글에서는 HTTP(S)를 통해 액세스하기 위해 Git이 항상 사용자 자격 증명을 요청하는 문제를 해결하는 방법을 보여 드리겠습니다. HTTP(S)를 통해 원격 저장소와 상호작용할 때 Git이 반복적으로 사용자 이름과 비밀번호를 묻는 메시지를 표시하지 않도록 하는 다양한 방법을 설명하겠습니다.

Linux에 Git을 설치하는 방법

시스템에 Git 패키지가 설치되어 있지 않은 경우 Linux 배포판에 적합한 명령을 실행하여 설치하세요(필요한 경우 Sudo 명령 사용).

sudo apt install git      [On Debian/Ubuntu]
yum install git           [On CentOS/RHEL/Fedora]
sudo zypper install git   [On OpenSuse]
sudo pacman -S git        [On Arch Linux]

원격 URL에 Git 사용자 이름 및 비밀번호 입력

앞서 언급했듯이 HTTP(S)를 통해 원격 Git 저장소를 복제할 때 모든 연결에는 사용자 이름비밀번호가 필요합니다. 표시됩니다.

Git사용자 이름비밀번호를 묻는 것을 방지하려면 표시된 대로 URL에 로그인 자격 증명을 입력할 수 있습니다.


sudo git clone https://username:[email /username/repo_name.git
OR
sudo git clone https://username:[email /username/repo_name.git local_folder

이 방법의 주요 단점은 사용자 이름비밀번호가 셸 기록 파일의 명령에 저장된다는 것입니다.

보안 위험이 있는 로컬 폴더 아래의 .git/config 파일에도 있습니다.

cat .git/config

참고: 2단계 인증을 활성화했거나 SAML 싱글 사인온(SSO)을 사용하는 조직에 액세스하는 Github 사용자의 경우 다음을 수행해야 합니다. HTTPS Git에 비밀번호를 입력하는 대신 개인 액세스 토큰을 생성하고 사용하세요(이 가이드의 샘플 출력에 표시됨). 개인 액세스 토큰을 생성하려면 Github에서 설정 => 개발자 설정 =>으로 이동하세요. 개인 액세스 토큰.

디스크에 원격 Git 저장소 사용자 이름 및 비밀번호 저장

두 번째 방법은 표시된 것처럼 Git 자격 증명 도우미를 사용하여 사용자 이름과 비밀번호를 디스크의 일반 파일에 저장하는 것입니다.

git config credential.helper store				
OR
git config --global credential.helper store		

이제부터 Git은 처음 액세스할 때 각 URL 컨텍스트에 대해 ~/.git-credentials 파일에 자격 증명을 작성합니다. 이 파일의 내용을 보려면 표시된 대로 cat 명령을 사용할 수 있습니다.

cat  ~/.git-credentials

동일한 URL 컨텍스트에 대한 후속 명령의 경우 Git은 위 파일에서 사용자 자격 증명을 읽습니다.

이전 방법과 마찬가지로 Git에 사용자 자격 증명을 전달하는 이 방법도 저장 파일이 암호화되지 않고 표준 파일 시스템 권한에 의해서만 보호되기 때문에 안전하지 않습니다.

아래에 설명된 세 번째 방법이 더 안전한 것으로 간주됩니다.

메모리에 원격 Git 저장소 사용자 이름 및 비밀번호 캐싱

마지막으로 Git 자격 증명 도우미를 사용하여 잠시 동안 자격 증명을 메모리에 임시 저장할 수도 있습니다. 그렇게 하려면 다음 명령을 실행하십시오.

git config credential.helper cache
OR
git config --global credential.helper cache

위 명령어를 실행한 후 처음으로 원격 개인 저장소에 접근하려고 하면 Git은 사용자 이름과 비밀번호를 묻고 일정 시간 동안 메모리에 저장합니다.

기본 캐싱 시간은 900초(또는 15분)이며, 그 이후에는 Git에서 사용자 이름과 비밀번호를 다시 입력하라는 메시지를 표시합니다. 다음과 같이 변경할 수 있습니다(1800초=30분 또는 3600초=1시간).

git config --global credential.helper 'cache --timeout=18000'
OR
git config --global credential.helper 'cache --timeout=36000'

Git 및 자격 증명 도우미에 대한 자세한 내용은 매뉴얼 페이지를 참조하세요.

man git
man git-credential-cache
man git-credential-store

이 가이드가 도움이 되었나요? 아래 피드백 양식을 통해 알려주십시오. 이 주제에 대한 질문이나 생각을 공유할 수도 있습니다.