개발관련/Git

커밋 푸시를 위해 GitHub 자격 증명을 캐시하는 방법

Rateye 2021. 12. 15. 11:22
728x90
반응형
질문 : 커밋 푸시를 위해 GitHub 자격 증명을 캐시하는 방법이 있습니까?

최근에 GitHub (방화벽 문제로 인해)에서 내 저장소를 https : //로 동기화하도록 전환했으며 매번 암호를 묻습니다.

git push 할 때마다 인증하는 대신 자격 증명을 캐시하는 방법이 있습니까?

답변

Git 버전 1.7.9 이상에서

Git 1.7.9 (2012 년 1 월 말에 릴리스 됨) 이후 Git에는 자격 증명 도우미 라고하는 HTTP / HTTPS에 대해 항상 암호를 입력하지 않아도되는 깔끔한 메커니즘이 있습니다. (아래 댓글에서이 새로운 기능을 지적 해 주신 dazonic 에게 감사드립니다.)

Git 1.7.9 이상에서는 다음 자격 증명 도우미 중 하나만 사용할 수 있습니다.

git config --global credential.helper cache

... 이는 Git에게 암호를 (기본적으로) 15 분 동안 메모리에 캐시하도록 지시합니다. 다음을 사용하여 더 긴 시간 제한을 설정할 수 있습니다.

git config --global credential.helper "cache --timeout=3600"

(이 예제는 Linux 용 GitHub 도움말 페이지 에서 제안되었습니다.) 원하는 경우 자격 증명을 영구적으로 저장할 수도 있습니다. 아래 다른 답변을 참조하십시오.

GitHub의 도움말에 따르면 Mac OS X에서Homebrew 를 사용하여 Git을 설치 한 경우 다음과 함께 기본 Mac OS X 키 저장소를 사용할 수 있습니다.

git config --global credential.helper osxkeychain

Windows의 경우 Windows 용 Git Credential Manager 또는 msysgit의 wincred 라는 도우미가 있습니다.

git config --global credential.helper wincred # obsolete

Windows 2.7.3+ 용 Git (2016 년 3 월) :

git config --global credential.helper manager

Linux의 경우 (2011 년) gnome-keyring (또는 KWallet과 같은 다른 키링 구현)을 사용합니다.

요즘 (2020), (리눅스에서)

Fedora

sudo dnf install git-credential-libsecret
git config --global credential.helper /usr/libexec/git-core/git-credential-libsecret

Ubuntu

sudo apt-get install libsecret-1-0 libsecret-1-dev
cd /usr/share/doc/git/contrib/credential/libsecret
sudo make
git config --global credential.helper /usr/share/doc/git/contrib/credential/libsecret/git-credential-libsecret

Git 1.7.9 이전 버전인 경우

1.7.9 이전의 Git 버전에서는이보다 안전한 옵션을 사용할 수 없으며 origin 원격에서 사용하는 URL을 변경하여 다음과 같은 방식으로 암호를 포함해야합니다.

https://you:password@github.com/you/example.git

... 즉, 사용자 이름 뒤와 @ :password 있습니다.

origin 원격에 대한 새 URL을 설정할 수 있습니다.

git config remote.origin.url https://you:password@github.com/you/example.git

https 를 사용하고 있는지 확인하세요. 이렇게하면 .git 디렉토리에 일반 텍스트로 저장되므로 분명히 바람직하지 않습니다.

모든 Git 버전 포함(0.99 버전 이후)

~/.netrc 파일에 사용자 이름과 암호를 넣는 것입니다.하지만 원격 URL에 암호를 유지하는 것과 마찬가지로 암호가 일반 텍스트로 디스크에 저장되므로 보안 수준이 낮고 보안 수준이 떨어집니다. 권장하지 않습니다. 그러나이 방법을 사용하려면 ~/.netrc 다음 행을 추가하십시오.

machine <hostname> login <username> password <password>

... <hostname> 을 서버의 호스트 <username><password> 를 사용자 이름과 암호로 바꿉니다. 또한 해당 파일에 대해 제한적인 파일 시스템 권한을 설정해야합니다.

chmod 600 ~/.netrc

Windows에서이 파일은 _netrc 라고해야하며 % HOME % 환경 변수를 정의해야 할 수도 있습니다. 자세한 내용은 다음을 참조하십시오.

출처 : https://stackoverflow.com/questions/5343068/is-there-a-way-to-cache-github-credentials-for-pushing-commits
728x90
반응형