2009-07-14 2 views
16

로컬 인트라넷 사이트를 미러링하려고하고 'wget'을 사용하여 이전 질문을 찾았습니다. 익명의 사이트에서는 잘 작동하지만 username \ password (Windows 통합 인증을 사용하는 IIS)가 필요한 사이트에 대해서는 사용할 수 없습니다.NTLM을 사용하여 보호 된 사이트에 대해 wget 사용

wget과 -c --http 사용자 = '도메인 \ 사용자'--http-비밀번호 여기 http://local/site -dv

는 PWD입니다 = 여기

내가 전달할 것입니다 디버그 출력 (I 분명 더미 값 일부를 대체 주) :

 
Setting --verbose (verbose) to 1 
DEBUG output created by Wget 1.11.4 on Windows-MSVC. 

--2009-07-14 09:39:04-- http://local/site 
Host `local' has not issued a general basic challenge. 
Resolving local... seconds 0.00, x.x.x.x 
Caching local => x.x.x.x 
Connecting to local|x.x.x.x|:80... seconds 0.00, connected. 
Created socket 1896. 
Releasing 0x003e32b0 (new refcount 1). 

---request begin--- 
GET /site/ HTTP/1.0 
User-Agent: Wget/1.11.4 
Accept: */* 
Host: local 
Connection: Keep-Alive 

---request end--- 
HTTP request sent, awaiting response... 
---response begin--- 
HTTP/1.1 401 Access Denied 
Server: Microsoft-IIS/5.1 
Date: Tue, 14 Jul 2009 13:39:04 GMT 
WWW-Authenticate: Negotiate 
WWW-Authenticate: NTLM 
Content-Length: 4431 
Content-Type: text/html 

---response end--- 
401 Access Denied 
Closed fd 1896 
Unknown authentication scheme. 
Authorization failed. 

답변

9

wget 1.11에서 NTLM 인증이 깨졌습니다. 대신 1.10을 사용하십시오.

+4

관련 버그 티켓에 대한 링크를 추가하면 유용합니다. – Daenyth

+0

사실인지 아직 테스트 할 수 없습니다. 하지만 NTLM 경우 stdout 다른 동작을 확인합니다. http://www.mail-archive.com/[email protected]/msg00003.html –

+0

저 또한 저 또한 저를 위해 작동하는지 확인할 수 없습니다. 'wget --version'은 cygwin에 내장 된 GNU Wget 1.12를보고합니다. + 다이제스트 + ipv6 + nls + ntlm + opie + md5/openssl + https -gnutls + openssl + iri'. 그러나 제 경우 서버는'WWW-Authenticate : Negotiate' 만 제공합니다 (NTLM 또는 Kerberos 중 하나라고 생각합니다 - 협상). –

7

실제로 Curl은 NTLM 인증 웹 서버에서 콘텐츠를 가져 오는 데 더 좋은 도구 일 것입니다. 당신은 사용하여 제안 된 wget을 명령 행에 상응하는 기능을 얻을 수 있습니다 :

curl --anyauth --user username:password http://someserver/site 
+0

컬이 매력처럼 작동했습니다. 감사합니다. – diogovk

+0

"--anyauth"대신 "--ntlm"을 사용하면 저에게 효과적입니다. 그렇지 않으면, 나는 그것이 실패한 "협상"인증을 선택했다고 생각한다 ("--ntlm --negotiate"도 실패했다). –

0

사용을 나는 해결책을 발견

1

-–auth-no-challenge 옵션 (wget을 1.11+을).
기본 인증 IIS7의 해결 방법입니다.

인증은 다음 HTTP 헤더를 보낼 successeful 경우 :

'Authorization: <type> <credentials>'. 

브라우저와 사본이 헤더 PARAMS 브라우저에서 (불을 지르고 애드온)에서 인증을하거나 생성 할 수 그래서 우리는 수 :

$ echo -en 'username:password' | base64 
dXNlcm5hbWU6cGFzc3dvcmQK 
$ echo 'dXNlcm5hbWU6cGFzc3dvcmQK' | base64 -d 
username:password 

예 :

$ wget --header="Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQK" http://example.com/ 
관련 문제