최근에 방화벽 문제로 인해 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의의 도움 도 제안 당신이 맥 OS X에있어, 사용 된 경우 있음 브루 힘내을 설치, 당신이 네이티브 맥 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+ (2016 월) :
git config --global credential.helper manager
Linux의 경우gnome-keyring
(또는 KWallet과 같은 다른 키링 구현)을 사용할 수 있습니다 .
1.7.9 이전의 Git 버전
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
하고 있는지 확인하십시오. 이렇게하면 GitHub 비밀번호가 .git
디렉토리 에 일반 텍스트로 저장되므로 바람직하지 않습니다.
모든 Git 버전 (0.99 이후 버전)
~/.netrc
원격 URL에 비밀번호를 유지하는 것과 같이 비밀번호가 디스크에 일반 텍스트로 저장되므로 덜 안전하고 권장되지 않음을 의미하지만 다른 방법은 파일 에 사용자 이름과 비밀번호를 입력하는 것입니다. 그러나이 방법을 사용하려면 다음 줄을 추가하십시오 ~/.netrc
.
machine <hostname> login <username> password <password>
… 대체 <hostname>
서버의 호스트 이름으로, 그리고 <username>
및 <password>
사용자 이름과 암호. 또한 해당 파일에 대해 제한적인 파일 시스템 권한을 설정해야합니다.
chmod 600 ~/.netrc
Windows에서는이 파일을 호출해야하며 _netrc
% HOME % 환경 변수를 정의해야 할 수도 있습니다. 자세한 내용은 다음을 참조하십시오.
답변
다음을 사용하여 Git이 자격 증명을 영구적으로 저장하도록 할 수도 있습니다.
git config credential.helper store
참고 :이 방법은 편리하지만 Git은 프로젝트 디렉토리 아래의 로컬 파일 (.git-credentials)에 자격 증명을 일반 텍스트로 저장합니다 ( “home”디렉토리는 아래 참조). 마음에 들지 않으면이 파일을 삭제하고 캐시 옵션 사용으로 전환하십시오.
원격 저장소에 연결해야 할 때마다 Git이 자격 증명을 다시 요청하도록하려면 다음 명령을 실행할 수 있습니다.
git config --unset credential.helper
에서 암호를 저장하려면 .git-credentials
당신의 %HOME%
프로젝트 디렉토리에 반대 디렉토리를 사용하는 --global
플래그
git config --global credential.helper store
답변
TLDR; Git 1.8.3+와 함께 암호화 된 netrc 파일을 사용하십시오 .
Git 리포지토리 HTTPS URL의 비밀번호 저장은 Windows 의 ~/.netrc
(Unix) 또는 %HOME%/_netrc
(참고 _
)로 가능합니다.
그러나 : 해당 파일은 비밀번호를 일반 텍스트로 저장합니다.
해결책 : GPG (GNU Privacy Guard)로 파일을 암호화 하고 암호가 필요할 때마다 ( push
/ pull
/ fetch
/ clone
작업용) Git의 암호를 해독하십시오 .
참고 : Git 2.18 (Q2 2018)에서는 이제 암호화 된 .netrc
파일 을 해독하는 데 사용되는 GPG를 사용자 정의 할 수 있습니다 .
Luis Marsano (“)의 commit 786ef50 , commit f07eeed (2018 년 5 월 12 일)를 참조하십시오 . ( Junio C Hamano 에 의해 병합 – 커밋 017b7c5 , 2018 년 5 월 30 일)
gitster
git-credential-netrc
:gpg
옵션을 수락
git-credential-netrc
gpg
gpg.program 옵션에 관계없이 ‘ ‘ 로 해독하도록 하드 코딩되었습니다 .
이것은 데비안과 같은 배포판에서 현대 GnuPG를 ‘gpg2
‘
Windows 용 단계별 지침
Windows의 경우 :
(Git은 gpg.exe
배포판을 가지고 있지만 전체 GPG 설치를 사용하면 gpg-agent.exe
GPG 키와 관련된 암호를 기억하는을 포함합니다 .)
-
gpg4Win Lite
최소 gnupg 명령 행 인터페이스를 설치 하고 ( 가장 최근에 사용gpg4win-vanilla-2.X.Y-betaZZ.exe
) GPG 설치 디렉토리로 PATH를 완료하십시오.set PATH=%PATH%:C:\path\to\gpg copy C:\path\to\gpg\gpg2.exe C:\path\to\gpg\gpg.exe
( ‘ copy
‘명령 : Git은 명령 ‘ gpg
‘ 을 (를) 실행하려면 Bash 스크립트가 필요합니다 . gpg4win-vanilla-2
와 함께 제공 되므로 gpg2.exe
복제해야합니다.)
-
GPG 키를 작성하거나 가져 와서 신뢰하십시오.
gpgp --import aKey # or gpg --gen-key
해당 키에 암호를 입력하십시오.
-
신임 헬퍼 스크립트를 다음 디렉토리에 설치하십시오
%PATH%
.cd c:\a\fodler\in\your\path curl -o c:\prgs\bin\git-credential-netrc https://raw.githubusercontent.com/git/git/master/contrib/credential/netrc/git-credential-netrc.perl
(주의 : Git 2.25.x / 2.26에서 스크립트 이름이 변경되었습니다 (아래 참조))
(예, 이것은 Bash 스크립트이지만 Git에서 호출하기 때문에 Windows에서 작동합니다.)
-
일반 텍스트로 _netrc 파일 만들기
machine a_server.corp.com login a_login password a_password protocol https machine a_server2.corp.com login a_login2 password a_password2 protocol https
( 사용할 URL에 따라 ‘ protocol
‘부분 : ‘ http
‘또는 ‘ https
‘을 잊지 마십시오 .)
-
해당 파일을 암호화하십시오.
gpg -e -r a_recipient _netrc
(이제 수 삭제할_netrc
만을 유지, 파일을 _netrc.gpg
암호화 한.)
-
암호화 된 파일을 사용하십시오.
git config --local credential.helper "netrc -f C:/path/to/_netrc.gpg -v"
( ‘ /
‘: C:\path\to...
전혀 작동하지 않습니다.) (처음 -v -d
에는 어떤 일이 일어나고 있는지 확인할 수 있습니다 .)
이제부터 인증이 필요한 HTTP (S) URL을 사용하는 Git 명령은 해당 _netrc.gpg
파일 을 해독 하고 접속중인 서버와 관련된 로그인 / 암호를 사용합니다. GPG는 처음으로 파일을 해독하기 위해 GPG 키의 암호를 묻습니다. 다른 경우 에는 첫 번째 GPG 호출에 의해 자동으로 시작된 gpg-agent 가 해당 암호를 제공합니다.
이렇게하면 하나의 파일에 여러 URL / 로그인 / 암호를 암기 하고 디스크에 암호화하여 저장할 수 있습니다.
“캐시”도우미보다 편리합니다. 여기서 각 원격 서비스에 대해 다른 암호를 기억하고 입력 (세션 당 한 번)해야합니다. 암호는 메모리에 캐시됩니다.
Git 2.26 (Q1 2020)에서는 사용할 수있는 샘플 자격 증명 도우미 .netrc
가 기본적으로 작동하도록 업데이트되었습니다. 패치 / 토론을 참조하십시오 .
Denton Liu ( )의 commit 6579d93 , commit 1c78c78 (2019 년 12 월 20 일)를 참조하십시오 . ( Junio C Hamano 에 의해 병합 — 커밋 1fd27f8 , 2019 년 12 월 25 일)Denton-L
gitster
contrib/credential/netrc
:PERL_PATH
구성 가능 하게 만들기서명자 : Denton Liu
Perl 인터프리터의 shebang 경로
git-credential-netrc
는 하드 코딩되었습니다.
그러나 일부 사용자는 다른 위치에있을 수 있으므로 스크립트를 수동으로 편집해야합니다.
.perl
스크립트 에 접 두부를 추가하여 템플리트로 표시하고 생성 된 버전을 무시하십시오. 다른 Perl 스크립트와 마찬가지로 에서 생성되도록
확장하십시오 .Makefile
git-credential-netrc
git-credential-netrc.perl
Makefile 레시피는 뻔뻔스럽게 도난당했습니다
contrib/mw-to-git/Makefile
.
과:
2.26 (Q1 2020)에서는 .netrc 사용을위한 샘플 자격 증명 도우미가 기본적으로 작동하도록 업데이트되었습니다.
Denton Liu ( )의 commit 6579d93 , commit 1c78c78 (2019 년 12 월 20 일)를 참조하십시오 . ( Junio C Hamano 에 의해 병합 — 커밋 1fd27f8 , 2019 년 12 월 25 일)Denton-L
gitster
contrib/credential/netrc
: 레포 밖에서 일하십시오서명자 : Denton Liu
현재
git-credential-netrc
git 저장소 외부에서는 작동하지 않습니다. 다음 오류와 함께 실패합니다.fatal: Not a git repository: . at /usr/share/perl5/Git.pm line 214.
그래도 저장소 내에 있어야하는 실제 이유는 없습니다. 자격 증명 도우미는 저장소 외부에서도 잘 작동 할 수 있어야합니다.
자체 버전이 아닌 버전을 호출하여 더 이상 저장소 내에서 실행할 필요
config()
가git-credential-netrc
없습니다.
Jeff King ( peff
)은 다음을 추가합니다.
gpg 암호화 된 것을 사용한다고 가정합니다
netrc
(그렇지 않으면 아마도을 사용해야합니다credential-store
).
“읽기 전용”비밀번호 액세스의 경우 다음pass
과 같이 config와의 조합 이 더 좋습니다.[credential "https://github.com"] username = peff helper = "!f() { test $1 = get && echo password=`pass github/oauth`; }; f"
답변
HTTPS URL에 사용자 자격 증명을 저장하는 쉬운 방법은 다음과 같습니다.
https://user:password@github.com/...
당신은 URL을 변경할 수 있습니다 git remote set-url <remote-repo> <URL>
이 접근 방식의 명백한 단점은 비밀번호를 일반 텍스트로 저장해야한다는 것입니다. 사용자 이름 ( https://user@github.com/...
) 만 입력하면 최소한 번거 로움을 덜 수 있습니다.
SSH로 전환하거나 GitHub 클라이언트 소프트웨어를 사용하는 것이 좋습니다.
답변
자격 증명 저장소를 사용하십시오.
에 힘내 2.11+를 들어 OS X 와 리눅스 , 사용 망할 놈의 자격 증명 저장소에 내장 :
git config --global credential.helper libsecret
Windows에서 msysgit 1.7.9+의 경우 :
git config --global credential.helper wincred
OS X에서 Git 1.7.9+의 경우 :
git config --global credential.helper osxkeychain
답변
당신은 그냥 사용할 수 있습니다
git config credential.helper store
다음에 끌어 오기 또는 밀어 넣기로 비밀번호를 입력하면 파일 .git-credentials에 일반 텍스트로 저장됩니다 (비보안이지만 보호 된 폴더에 저장).
그리고이 페이지에 명시된 바와 같습니다.
답변
도우미를 먼저 다운로드해야한다는 것이 즉시 분명하지 않았습니다! Atlassian의 Peritently Git 저장소로 인증 에서 credential.helper 다운로드를 찾았습니다 .
인용문:
OS X에서 자격 증명 캐싱과 함께 Git을 사용하려면 다음 단계를 따르십시오.
바이너리 git-credential-osxkeychain을 다운로드하십시오.
바이너리가 실행 가능한지 확인하려면 아래 명령을 실행하십시오.
chmod a+x git-credential-osxkeychain
디렉토리에 넣으십시오 /usr/local/bin
.
아래 명령을 실행하십시오.
git config --global credential.helper osxkeychain