Gau*_*wal 9 networking proxy windows-subsystem-for-linux
我在 Windows 10 上使用 Ubuntu WSL。如何配置带有身份验证的 HTTP 代理?
我假设您的代理需要基于NTLM 的用户身份验证,这不适用于$HTTP_PROXY
. 这需要一个支持 NTLM 的代理:例如cntlm。
安装代理的默认方式是使用sudo apt-get install cntlm
,但如果没有任何代理,这显然会失败。您需要手动下载包cntlm_0.92.3-1ubuntu1_amd64.deb并将其复制到您的 WSL 实例中。
安装包
$ sudo dpkg -i cntlm_0.92.3-1ubuntu1_amd64.deb
Run Code Online (Sandbox Code Playgroud)
该cntlm
代理需要适当NTLM代理配置/etc/cntlm.conf
:
# /etc/cntlm.con
Domain Domain
Username username
Proxy 1.2.3.4:5678
NoProxy localhost, 127.0.0.*, 10.*, 192.168.*
Listen 3128
Run Code Online (Sandbox Code Playgroud)
这是cntlm
. cntlm
使用以下命令进行测试和验证:
$ cntlm -M http://www.google.com
cntlm: Starting cntlm version 0.92.3 for LITTLE endian
cntlm: Proxy listening on 127.0.0.1:3128
cntlm: Workstation name used: hostname
Password:
Run Code Online (Sandbox Code Playgroud)
如果身份验证成功,请使用-H
交换机生成身份验证的哈希:
$ cntlm -H
cntlm: Starting cntlm version 0.92.3 for LITTLE endian
cntlm: Proxy listening on 127.0.0.1:3128
cntlm: Workstation name used: somehost
cntlm: Using following NTLM hashes: NTLMv2(1) NT(0) LM(0)
Password:
PassLM 123456789ABCDEF123456789ABCDEF12
PassNT 123456789ABCDEF123456789ABCDEF12
PassNTLMv2 123456789ABCDEF123456789ABCDEF12 # Only for user 'username', domain 'Domain'
cntlm: Terminating with 0 active threads
Run Code Online (Sandbox Code Playgroud)
添加三个散列PassLM
,PassNT
并PassNTLMv2
到cntlm
配置文件/etc/cntlm.conf
。然后通过systemd
以下方式激活代理:
$ cntlm -H
cntlm: Starting cntlm version 0.92.3 for LITTLE endian
cntlm: Proxy listening on 127.0.0.1:3128
cntlm: Workstation name used: somehost
cntlm: Using following NTLM hashes: NTLMv2(1) NT(0) LM(0)
Password:
PassLM 123456789ABCDEF123456789ABCDEF12
PassNT 123456789ABCDEF123456789ABCDEF12
PassNTLMv2 123456789ABCDEF123456789ABCDEF12 # Only for user 'username', domain 'Domain'
cntlm: Terminating with 0 active threads
Run Code Online (Sandbox Code Playgroud)
现在代理应该在端口上侦听本地主机 3128
。
现在,当这个描述可以配置代理服务器后,但使用:
$ sudo systemctl restart cntlm
Run Code Online (Sandbox Code Playgroud)
小智 -1
从你的 bash shell 中:
export http_proxy=http://[username]:[password]@[proxy-webaddress]:[port]
Run Code Online (Sandbox Code Playgroud)
并且可能
export https_proxy=https://[username]:[password]@[proxy-webaddress]:[port]
Run Code Online (Sandbox Code Playgroud)
用户名和密码通常是 Windows 域凭据。如果密码包含任何特殊字符,您可能需要使用反斜杠对特殊字符进行转义,以保护它们免受 shell 的攻击。例如,如果您的 Windows 帐户是“gomer”,密码为“Pea$1rzz”,并且您的代理服务器是端口 8080 上的 bluecoat.acme.com,那么您会说
export http_proxy=http://gomer:Pea\$1rzz@bluecoat.acme.com:8080
export https_proxy=https://gomer:Pea\$1rzz@bluecoat.acme.com:8080
echo $http_proxy
echo $https_proxy
Run Code Online (Sandbox Code Playgroud)
应显示正确的凭据。您需要对每个 shell 执行此操作。因此,如果您想使用 apt 进行一些工作,打开 root shell 可能会更方便
sudo bash
Run Code Online (Sandbox Code Playgroud)
在设置代理之前。