질문 : 커밋 푸시를 위해 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
'개발관련 > Git' 카테고리의 다른 글
하나의 명령으로 git 루트 디렉토리를 얻는 방법 (0) | 2021.12.15 |
---|---|
Xcode 프로젝트에 대한 Git ignore 파일 (0) | 2021.12.15 |
Git 저장소에서 삭제 된 파일을 찾고 복원하는 방법 (0) | 2021.12.14 |
현재 변경 사항으로 Git 분기 만들기 (0) | 2021.12.14 |
git 히스토리에서 큰 커밋을 찾고 식별하는 방법 (0) | 2021.12.14 |