@Steve Roberts의 답변을 확장하십시오.
내 사용자 이름은 "domain \ username"형식입니다. 프록시 구성에 슬래시를 포함하면 슬래시가 나타납니다. 그래서 이것을 입력하십시오 :
npm config set proxy "http://domain\username:password@servername:port/"
또한 URL을 인코딩해야했습니다. domain\user
문자열 해야했지만 사용자 이름 안에 공백이 있으므로 +
공백 URL 인코딩을 인코딩하기 위해 두 번 인코딩 할 수 있지만 %2B
(더하기 부호의 URL 인코딩이지만 URL은 공백 인코딩은%20
)이므로 대신 다음을 수행해야했습니다.
npm 명령
// option one
// it works for some packages
npm config set http_proxy "http://DOMAIN%5Cuser+name:password@x.x.x.x:port"
npm config set proxy "http://DOMAIN%5Cuser+name:password@x.x.x.x:port"
// option two
// it works best for me
// please notice that I actually used a space
// instead of URL encode it with '+', '%20 ' OR %2B (plus url encoded)
npm config set http_proxy "http://DOMAIN%5Cuser name:password@x.x.x.x:port"
npm config set proxy "http://DOMAIN%5Cuser name:password@x.x.x.x:port"
// option two (B) as of 2019-06-01
// no DOMAIN
// instead of URL encode it with '+', '%20 ' OR %2B (plus url encoded)
npm config set http_proxy "http://user name:password@x.x.x.x:port"
npm config set proxy "http://user name:password@x.x.x.x:port"
npm 구성 문제 해결
나는 npm config list
위에서 설정 한 파싱 된 값을 얻기 위해를 , 이것이 이중 인코딩에 대해 알아 낸 방법입니다. 기묘한.
기본적으로 다음 요구 사항을 파악해야합니다.
- 입니다
DOMAIN
문자열은 인증에 필요한
- 특수 문자를 인코딩해야합니까?
- 공백과 at (@) 표시는 특별히 까다 롭습니다.
문안 인사.
WINDOWS 환경 변수 (CMD 프롬프트)
최신 정보
위의 구성으로도 요청- 내부적으로 단순화 된 HTTP 클라이언트 를 사용 하여 물건을 다운로드 하는 일부 패키지 / 스크립트에 여전히 문제가 있음이 밝혀 졌습니다. 위의 추가 정보에서 설명한 것처럼 환경 변수를 지정할 수 있습니다. 명령 행에서 프록시를 설정하기 위해 를 있으며 요청은 해당 값을 준수합니다.
그런 다음 환경 변수를 설정하려고 여러 번 시도한 후 (그리고 더 인정하기를 꺼려합니다) 마침내 다음 지침에 따라 성공했습니다.
rem notice that the value after the = has no quotations
rem - I believe that if quotations are placed after it, they become
rem part of the value, you do not want that
rem notice that there is no space before or after the = sign
rem - if you leave a space before it, you will be declaring a variable
rem name that includes such space, you do not want to do that
rem - if you leave a space after it, you will be including the space
rem as part of the value, you do not want that either
rem looks like there is no need to URL encode stuff in there
SET HTTP_PROXY=http://DOMAIN\user name:password@x.x.x.x:port
SET HTTPS_PROXY=http://DOMAIN\user name:password@x.x.x.x:port
cntlm
프록시 설정이 필요한 모든 도구에서 비밀번호를 업데이트하는 오버 헤드를 인식 할 때까지 위의 기술을 몇 주 동안 사용했습니다.
npm 외에도 다음을 사용합니다.
- 나무 그늘
- 방랑자
- 가상 상자 (리눅스 실행)
- apt-get [linux]
- 자식
- vscode
- 괄호
- 원자
- tsd
cntlm 설정 단계
그래서 cntlm을 설치 했습니다 . 설정 cntlm
은 꽤 앞으로 진행됩니다 .Ini 파일 @C:\Program Files\Cntlm\cntlm.ini
- 개방
C:\Program Files\Cntlm\cntlm.ini
(관리자 권한이 필요할 수 있음)
- 대한 모양
Username
과 Domain
선 (라인 8-9 나는 생각한다)
- 사용자 이름을 추가하십시오
- 도메인을 추가하십시오
cmd 프롬프트에서 다음을 실행하십시오.
cd C:\Program Files\Cntlm\
cntlm -M
cntlm -H
cygwin warning:
MS-DOS style path detected: C:\Program Files\Cntlm\cntlm.ini
Preferred POSIX equivalent is: /Cntlm/cntlm.ini
CYGWIN environment variable option "nodosfilewarning" turns off this warning.
Consult the user's guide for more details about POSIX paths:
http://cygwin.com/cygwin-ug-net/using.html#using-pathnames
Password:
당신이 얻는 결과 cntlm -H
는 다음과 같습니다.
PassLM 561DF6AF15D5A5ADG
PassNT A1D651A5F15DFA5AD
PassNTLMv2 A1D65F1A65D1ASD51 # Only for user 'user name', domain 'DOMAIN'
- 당신이 PassNTLMv2이 때문에 추가 사용하는 것이 시스템 권장되어
#
줄 앞에 PassLM
및 PassNT
하거나 사용하지 않는
- , 및
cntlm -H
의 행을 바꾸어 ini 파일 의 출력을 붙여 넣거나 원래 행을 주석 처리하고 추가하십시오.PassLM
PassNT
PassNTMLv2
Proxy
서버를 추가하십시오 . 프록시 서버가 무엇인지 모르는 경우 ... 수행 한 작업을 수행하십시오 . 에서 AutoConfigURL
레지스트리 키를 찾아서 프록시 자동 구성 파일을 찾으십시오 HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings
. 해당 URL로 이동하여 JavaScript 인 코드를 살펴보십시오.
- 선택적으로
Listen ####
회선 ####
번호 를 변경하여 cntlm이 청취하는 포트를 변경할 수 있습니다 .
cntlm으로 NPM 설정
따라서 npm을 cntml 프록시로 지정하면 ip, 내가 사용한 localhost
cntlm의 기본 포트를 사용할 수 3128
있으므로 프록시 URL은 다음과 같습니다.
http://localhost:3128
적절한 명령으로 :
npm 구성 세트 프록시 http : // localhost : 3128
훨씬 간단합니다. 모든 URL을 동일한 URL로 설정하고 한 곳에서만 비밀번호를 업데이트합니다. 인생은 훨씬 간단하지 않습니다.
npm CA 인증서를 설정해야 함
npm 문서 캘리포니아에서
회사 프록시가 자체 자체 서명 된 인증서로 https 연결을 가로채는 경우이를 피해야합니다. npm config set strict-ssl false
(아니요)
기본 단계
- 브라우저에서 인증서를 받으십시오 (Chromes가 잘 작동 함). Base-64로 인코딩 된 X.509 (.CER) 로 내보내기
- 줄 바꾸기를
\n
.npmrc
라인 추가 편집ca[]="-----BEGIN CERTIFICATE-----\nXXXX\nXXXX\n-----END CERTIFICATE-----"
이슈
때때로 npm 종류의 중단이 발생 했으므로 cntlm을 중지 하고 다시 시작합니다.