git 프록시 비밀번호에서 @ 문자 이스케이프


89

git proxy config as 'http.proxy = http : // userId : pwd @ 123 @ipaddress : port'하지만 원격 프로젝트를 복제하는 동안 다음과 같은 오류가 발생합니다.

Cloning into git...
error: Couldn't resolve proxy '123@ipaddress' while accessing http://git.kernel.org/pub/scm/git/git.git/info/refs

fatal: HTTP request failed

비밀번호에서 '@'문자를 이스케이프하는 방법은 무엇입니까?

Pls 참고 : 암호를 변경할 수 없습니다.

답변:


158

%40프록시 URL에 암호를 전달하는 경우 @ 기호 ( ) 의 URL 인코딩 값을 사용해 보겠습니다.

http.proxy=http://userId:pwd%40123@ipaddress:port

3
나는이 같은 트릭을 시도하고 있지만 'git clone user : pwd % 40123 @ ip : port '를 사용하면 작동하지 않습니다. 그래서이 상황에서 git은 curl을 사용하지 않는 것 같아요?
Joseph Garvin 2012

흥미 롭군요 ... 확실하지 않습니다. 이 경우 실제로 와이어를 통해 전송되는 내용을 확인하는 것이 좋습니다.
John Weldon

1
이것은 나를 도왔다. 이름과 암호 부분을 모두 별도로 URL 인코딩해야합니다. 이렇게하면 특수 문자와 관련된 문제를 피할 수 있습니다. 예를 들어 문제를 일으킬 수있는 ":"기호가있을 수 있습니다.
Stalinko

2
이것은 또한 사용자 이름에 '@'가있는 경우 (예 : 사용자 이름으로 이메일 주소가있는 경우)에도 좋습니다.
ramdesh 2011 년

이틀간의 투쟁 끝에 내 문제를 해결 해주셔서 정말 감사합니다. 이런 종류의 문제의 원인을 찾기가 정말 어렵습니다.
lleiou

61

참고 (2013 년 11 월)

URL (특히 비밀번호의 특수 문자)을 인코딩하는 것이 올바른 해결책입니다.
.netrc해결하는 데 사용되는 프록시는 원격의 repo URL을 말했다하지 않는, 오직 원격의 repo URL에 대한 다음에서 언급.

해당 인코딩에 대해서는 " 백분율 인코딩 "을 참조하십시오 .

URL 인코딩 이라고도하는 백분율 인코딩 은 특정 상황에서 URI ( Uniform Resource Identifier)의 정보를 인코딩하는 메커니즘입니다 . URL 인코딩으로 알려져 있지만 실제로는 URL ( Uniform Resource Locator )과 URI ( Uniform Resource Name )를 모두 포함 하는 기본 URI ( Uniform Resource Identifier ) 세트 내에서 더 일반적으로 사용됩니다 . 따라서 HTTP 요청 에서 HTML 양식 데이터를 제출할 때 자주 사용되는 것과 같이 application / x-www-form-urlencoded 미디어 유형 의 데이터 준비에도 사용됩니다 .

백분율 인코딩 후 예약 된 문자 :

!   #   $    &   '   (   )   *   +   ,   /   :   ;   =   ?   @   [   ]
%21 %23 %24 %26 %27 %28 %29 %2A %2B %2C %2F %3A %3B %3D %3F %40 %5B %5D

원문 답변 (2011 년 5 월)

두 가지 의견 :

  • http (https가 아님)로 액세스 한 서버의 암호를 갖는 것은 이상합니다. 암호는 클라이언트와 서버 간의 통신 중에 암호화되지 않습니다.

  • 에서 다음 내용 으로 .netrc(또는 _netrcWindows 용)을 설정할 수 $HOME있습니다.

    기계 ipaddress : port
    로그인 사용자 ID
    암호 pwd @

Git bbehind에서 사용하는 curl은 인코딩을 잘 처리 @하거나 @.


답변 주셔서 감사합니다. 서버는 나 자신과 다른 2 명의 개발자 만 사용할 네트워크 드라이브였습니다. 그래서 암호화가 필요 없다고 생각합니다. 그리고 언젠가 netrc를 사용해 볼 것입니다.
Karthik

@Karthik : http://123@ipaddress:port/...사용자 및 암호 정보를 추가 할 필요없이 복제 주소로 간단히 사용할 수 있습니다 .
VonC

8

URL은 비정상적인 문자를 인코딩합니다.

URL 코드 목록입니다.

@ character is %40

내 자식 구성 파일에서 예를 들어 사용자 이름을 '단지'로 인코딩했습니다.

https://myemail%40gmail.com@myrepo.org/api.git


5

예를 들어, 환경 변수 GIT_PASSWORD, username-에 저장된 암호 GIT_USERNAME는 다음과 같습니다.

git clone http://${GIT_USERNAME}:$(echo -n $GIT_PASSWORD | hexdump -v -e '"x" 1/1 "%02X"' | tr x %)@repository.git

설명 : echo -n $GIT_PASSWORD | hexdump -v -e '"x" 1/1 "%02X"' | tr x %

  1. 인쇄 암호 : $GIT_REPOSITORY<-hello
  2. 'hello'를 16 진수로 변환 : hello<-x68x65x6Cx6Cx6F
  3. 각 'x'를 '%'로 변경 : x68x65x6Cx6Cx6F<-%68%65%6C%6C%6F

2

당신은에있는 퍼센트 인코딩 | 특수 문자를 인코딩 하십시오. 예를 들면 다음과 같습니다.

http://foo:B@r@http-gateway.domain.org:80

당신은 이것을 작성합니다 :

http://foo:B%40r@http-gateway.domain.org:80

그래서 @으로 대체됩니다 %40.

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