Git-Windows에서 .netrc 파일을 사용하여 사용자 및 비밀번호를 저장하는 방법


172

Git을 사용하여 HTTP 및 사용자 비밀번호로 원격 저장소를 복제 할 때 Windows에서 .netrc 파일을 사용할 수 있습니까?

답변:


203

.netrcWindows 에서 파일 을 사용할 수 있습니까?

예 : 다음을 수행해야합니다.

  • 환경 변수 정의 %HOME%(Git 2.0 이상에서는 더 이상 필요하지 않은 Pre-Git 2.0)
  • _netrc파일을 넣다%HOME%

Windows 7/10을 사용하는 경우 CMD세션에서 다음을 입력하십시오.

setx HOME %USERPROFILE%

그리고 %HOME%' C:\Users\"username"' 로 설정됩니다 .
해당 폴더 ( cd %HOME%)로 이동하여 ' _netrc'

참고 : 다시, Windows 용, 당신은 '필요 _netrc'파일, 하지 에 ' .netrc'파일을.

내용은 매우 표준입니다 ( <examples>값으로 대체 ).

machine <hostname1>
login <login1>
password <password1>
machine <hostname2>
login <login2>
password <password2>

누가 는 주석에서 언급합니다.

Windows 7에서 최신 버전의 msysgit을 사용하면 HOME환경 변수 를 설정할 필요가 없습니다 . _netrc파일은 혼자 트릭을했다.

이것은 실제로 " install"github, .sshdir not there " 에서 언급 한 것입니다 :
git-cmd.batmsysgit에 포함 된 것은 %HOME%환경 변수를 설정합니다 :

@if not exist "%HOME%" @set HOME=%HOMEDRIVE%%HOMEPATH%
@if not exist "%HOME%" @set HOME=%USERPROFILE%

爱国者는 "http 프로토콜에서는 작동하지 않는 것 같습니다"라는 의견을 믿습니다.

그러나 나는 이 예제 에서 볼 수 있듯이,에서 netrc사용하고 curlHTTP 프로토콜에서 작동 한다고 대답했습니다 ( 페이지에서 ' '를 찾으십시오 ). HTTP 프로토콜과 함께 사용됩니다 : " / alternative to ".netrc_netrc.netrccURL


netrcWindows 에서 지원 되는 일반적인 트랩 은 origin https url이 사용자 이름을 지정하면 git이이를 사용하지 않는 것입니다.

예를 들어 .git/config파일에 다음이 포함 된 경우

[원격 "원산지"
     가져 오기 = + refs / heads / * : refs / remotes / origin / *
     url = https : //bob@code.google.com/p/my-project/

Git은을 통해 자격 증명을 해결하지 _netrc않으므로 다음과 같이 사용자 이름을 제거하십시오.

[원격 "원산지"
     가져 오기 = + refs / heads / * : refs / remotes / origin / *
     url = https://code.google.com/p/my-project/

대체 솔루션 :와 자식 버전 1.7.9+ (2012 년 1 월) : 이 답변 에서 마크 Longair가 세부 자격 증명 캐시 메커니즘 또한 당신이 할 수 없는 아래와 같이 일반 텍스트 암호를 저장합니다.


함께 힘내 1.8.3 (2013 년 4 월) :

이제 암호화 된 .netrc (를 사용하여)를 사용할 수 있습니다 gpg.
Windows의 경우 : %HOME%/_netrc( _', not' .')

파일 과 상호 작용하기 위한 새로운 읽기 전용 자격 증명 도우미 ( contrib/) .netrc/.authinfo가 추가되었습니다.

이 스크립트를 사용하면 자격 증명이 일반 텍스트 파일에 저장되는 문제를 피하면서 gpg 암호화 된 netrc 파일사용할 수 있습니다 .

.gpg확장자가있는 파일은 파싱하기 전에 GPG에 의해 해독됩니다.
여러 개의 -f인수는 괜찮습니다. 순서대로 처리되며, 발견 된 첫 번째 일치 항목은 신임 헬퍼 프로토콜을 통해 리턴됩니다.

어떤 경우에는 -f옵션이 제공되지 않는, .authinfo.gpg, .netrc.gpg, .authinfo, 및 .netrc홈 디렉토리에있는 파일은 다음 순서로 사용된다.

이 자격 증명 도우미를 활성화하려면

git config credential.helper '$shortname -f AUTHFILE1 -f AUTHFILE2'

Git은 git-credential-헬퍼 이름 앞에 " "를 붙여 경로에서 찾습니다.

# and if you want lots of debugging info:
git config credential.helper '$shortname -f AUTHFILE -d'

#or to see the files opened and data found:
git config credential.helper '$shortname -f AUTHFILE -v'

" 사용시 비밀번호 입력을 건너 뛸 수있는 방법이 있습니까?https:// github "


Git 2.18+ (2018 년 6 월)를 사용하면 암호화 된 .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-netrcgpggpg.program 옵션에 관계없이 ' ' 로 해독하도록 하드 코딩되었습니다 .
이것은 데비안과 같은 배포판에서 현대 GnuPG를 ' gpg2'


@Bernd : HOME환경 변수는 Windows에서 기본적으로 정의되어 있지 않기 때문에 중요합니다. 이 변수를 원하는 디렉토리로 설정할 수 있습니다 (필요하지는 않음 C:\users\mylogin). 예를 들어, 직장에서는 Windows 계정과 연결된 개인 원격 디스크로 설정하여 손실없이 데스크탑을 전환 할 수 있습니다. 내 .ssh또는 _netrc설정.
VonC

@Bernd : Git 저장소가 LAN 또는 WAN (인터넷) 서버에 있는지 확인하십시오. http.proxy환경 변수 를 정의해야 할 수도 있습니다 . 또는 no_proxyWAN을 통해 LAN 서버에 액세스하지 않도록 서버를 변수 에 추가하십시오 .
VonC

환경 변수의 이름과 값은 무엇입니까? 좀 더 구체적인 VonC가 되시겠습니까
Dennis D

@DennisD : 대답과 의견에서 내가 이야기하는 두 가지 환경 변수는 HOME과 http_proxy입니다. HOME은 원하는 디렉토리를 참조합니다. http_proxy는 프록시 주소가있는 경우이를 참조합니다.
VonC

msysgitWindows 7 의 최신 버전을 사용하면 HOME환경 변수 를 설정할 필요가 없습니다 . _netrc파일은 혼자 트릭을했다.
Luke

35

Windows 용 Git 자격 증명 관리자를 설치 하여 대신 Git 암호를 Windows 자격 증명 관리자에 저장할 수도 있습니다 _netrc. 이것은 암호를 저장하는보다 안전한 방법입니다.


8
좋은 대답은 이것이 내가 찾은 유일한 대답으로 모든 SSH 쓰레기를 처리하지 않고도 사용자 이름 / 암호의 단순성을 안전하게 유지할 수 있습니다.
Kirk Woll

@KirkWoll은 위의 내 업데이트 답변을 참조하십시오. 이제 자격 증명을 암호화 된 .netrc파일로 저장할 수 있습니다. 세션 중에 한 번이라도 자격 증명을 입력 할 필요는 없습니다.
VonC

11

이를 통해 Git은 다음을 사용하여 HTTPS에서 인증 할 수 있습니다 .netrc.

  • 이 파일 이름을 지정해야합니다 _netrc및 위치 c:\Users\<username>.
  • HOME=%USERPROFILE%(제어판의 시스템 옵션을 사용하여 시스템 전체 환경 변수 설정) 환경 변수를 설정해야합니다 . Windows 버전에 따라 "고급 옵션"을 선택해야 할 수도 있습니다.
  • _netrc파일에 저장된 암호는 공백을 포함 할 수 없습니다 (암호를 인용하면 작동하지 않습니다).

가장 간단하고 최상의 솔루션. Android Studio, 소스 트리 및 Git 명령 줄에서 매력처럼 작동했습니다. Google에서 권장하는 Cloud SDK credential.helper 옵션이 실패하고 자격 증명을 수동으로 생성하고 net rc 파일과 함께 사용해야 할 때 이것을 사용해야했습니다. 제 경우에는 옵션 2와 3이 필요하지 않았습니다.
Hari

1

_netrcwww.course.com 사이트에서 자료를 다운로드 하는 데 사용하는 방법을 게시 하고 있습니다.

누군가 코스 라 dl을 사용하여 www.coursera.com 및 Windows OS에서 오픈 클래스 자료를 다운로드하려는 경우 누군가는 유닉스 OS와 같은 ".netrc"와 같은 파일을 사용하여 편의성 -n대신에 옵션 -U <username> -P <password>. 다음과 같이 할 수 있습니다.

  1. Windows OS의 홈 경로를 확인하십시오 setx HOME %USERPROFILE%( VonC의 답변 참조 ). HOME환경 변수를로 저장합니다 C:\Users\"username".

  2. 디렉토리를 C:\Users\"username"찾아 파일 이름을 작성하십시오 _netrc. 참고 : 접미사가 없습니다. 내용은 다음과 같습니다machine coursera-dl login <user> password <pass>

  3. coursera-dl -n --path PATH <course name>수업 자료를 다운로드하는 것과 같은 명령을 사용하십시오 . 이 페이지에 대한 더 많은 coursera-dl 옵션 세부 사항 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.