要求407代理身份验证


38

当我尝试使用Ubuntu Software center安装软件时,我得到:

Failed to download repository information
Check Your Internet connection

当我尝试执行时apt-get install something,我得到:

407  Proxy Authentication Required

我使用的代理服务器需要用户名和密码。我已通过在网络代理中插入所需的编号并将其在系统范围内应用,来手动设置了系统代理。我想现在的问题是插入我的用户名和密码。

当我通过Mozilla使用INTERNET时,它专门询问我的用户名和密码。

Answers:


48

为了使apt-get正常工作,您应该编辑apt config文件:

sudo -H gedit /etc/apt/apt.conf

并添加 Acquire::http::Proxy "http://username:password@proxyhost:port/";

必须严格遵守上面显示的语法。

如果您的用户名或密码中带有“ @”,则此配置可能会失败。您还可以为其他协议(例如FTP)添加代理配置。

更新:如果您的用户名或密码中包含“ @”,则可以将其替换为%40。示例:如果您的密码@123输入为%40123

对于其他字符,请参见此百分比编码


4
我完全按照您说的做,但仍然给我同样的错误。它没有解决问题。
DeLiK

我添加了上述代理设置,但现在我得到404-找不到,代替407-代理身份验证
Deepak

如果我的密码包含“ @”怎么办?
Đēēpak

12

首先,通过Linux向导使用选项手动设置代理设置,然后像在此向导框中一样在系统范围内应用设置。

添加您的代理环境。这些只是示例设置...
打开命令提示符登录并编辑apt.conf文件:

sudo vi /etc/apt/apt.conf

已经有4行以Acquire关键字开头的代码,像这样编辑它:

Acquire::http::Proxy "http://username:password@proxyhost:port/";
Acquire::https::Proxy "https://username:password@proxyhost:port/";
Acquire::ftp::Proxy "ftp://username:password@proxyhost:port/";

注意
如果您的密码包含特殊字符,例如@,$,!!(例如,密码:P @ ssword),然后用%前缀将特殊字符替换为十六进制代码等效项,如下所示:

Acquire::http::Proxy "http://username:p%40ssword@proxyhost:port/"; 

@ ==>%40
$ ==>%24
!==>%21


我添加了上述代理设置,但现在我得到404-找不到,代替407-代理身份验证
Deepak

第一行和第四行有什么区别????
Moataz Elmasry

5

如果您在运行NTLM身份验证的企业代理后面,则可以使用CNTLM:

$ sudo apt-get install cntlm
$ sudo vi /etc/cntlm.conf

更改默认设置(域,用户名,密码和代理)。然后重新启动服务:

$ sudo /etc/init.d/cntlm restart

您现在可以使用localhost:3128(默认CNTLM端口)作为Ubuntu的系统范围代理。

检查http://cntlm.sourceforge.net/中的文档。


7
为了开始sudo apt-get install cntlm工作,您首先需要通过该代理。
Andrew Savinykh

2

我认为本教程应该对您有所帮助。

单击网络选项卡,选择手动代理配置选项,然后输入代理服务器,端口详细信息。如果您具有用户名,密码,请单击身份验证以输入这些详细信息,然后单击确定。

(来自http://www.ubuntugeek.com/how-to-configure-ubuntu-desktop-to-use-your-proxy-server.html

要为在shell中启动的所有程序调用它,我建议您将其添加到/etc/bash.bashrc使用中,gksudo gedit /etc/bash.bashrc以在系统范围内将其应用于所有bash会话或用户空间~/.bashrc

就Synaptic而言,您似乎可以PreferencesNetwork选项卡下的代理中设置身份验证。但是,这似乎特定于Synaptic。


我使用Ubuntu 11,u能帮助我在到达突触
user38507

也正是在bash.bashrc中确实需要插入用户名和密码的地方
user38507 2011年

export http_proxy=http://username:password@proxyhost:port/
Panther,

我给了命令sudo echo“ export http_proxy = swastik:ramdayal@192.168.11.107:8081 ” >> /etc/bash.bashrc即使现在我也遇到了同样的错误
user38507 2011年

2

一种不错的选择是使用Synaptic Package Manager安装Synaptic,您可以在其中指定系统独立的代理设置,还可以存储用户名和密码。

代理设定

但是,这不会更改Software Center的代理。


2

如果您的用户名用空格分隔,请使用:

export http_proxy='http://Pankaj Kumar Pandit:ABCD@192.168.1.1:3128/'

如果您的用户名之间没有空格,请使用:

export http_proxy=http://Pankaj_Kumar_Pandit:ABCD@192.168.1.1:3128/

区别在于增加了打开和关闭'


2

在最新版本的Ubuntu中,可以使用“系统设置”>“网络”>“网络代理”,然后单击"apply system wide"它可以在不同位置修改代理设置,至少包括/etc/apt/sources.list文件HOWEVER...。

它没有任何提示身份验证的机制。不知道为什么没有人做过那一部分,但是正因为如此,如果您需要身份验证,那么也需要以这种格式在其中输入密码和用户名:

username:password@proxy.address

如果您的密码或用户名中包含任何特殊字符,包括@#!其他,则您可能将必须使用HTML格式的字符代码来处理任何特殊字符。有关如何操作的信息,请参见此页面:http : //www.obkb.com/dcljr/charstxt.html


1

我也面临着同样的问题。然后我开始了解CNTLM。现在它真的很好用。在此处查看如何配置CNTLM。


2
尽管从理论上讲这可以回答问题,但最好在此处包括答案的基本部分,并提供链接以供参考。
Oyibo

谢谢!这是唯一对我有帮助的答案。其他答案(我已经知道)是假设代理使用的是基本HTTP身份验证,而我的情况并非如此。
亚历山大·阿梅尔金

1

我已经制作了一个Python脚本来在Ubuntu中设置代理设置

假设以下设置,您需要在相关位置进行替换

  • proxy_address 172.16.26.214
  • proxy_port 3128
  • proxy_username国王
  • proxy_password女王

我制作了一个视频,带您完成所有步骤:

https://www.youtube.com/watch?v=eBtzKa-dvJg

详细步骤如下:

  • 首先点击Dash
  • 在搜索框中输入“代理”(不带引号)
  • 点击“应用程序”下的“网络”
  • 选择“网络代理”
  • 选择手册
  • 输入代理地址和代理端口
  • 应用。输入系统密码进行确认

下载脚本 setproxy.py

https://pastebin.com/MbBHta8g

假设您已将储存setproxy.py在资料Downloads夹中

  • 开路端子类型
  • cd〜/下载

通用命令:
sudo python setproxy.py proxy_address proxy_port proxy_username proxy_password
对于我们的示例

  • 须藤Python setproxy.py 172.16.26.214 3128 king queen

如果是简单代理而不进行身份验证,则命令为:

  • 须藤Python setproxy.py 172.16.26.214 3128

如果您已经使用python 3或以上运行python2.7 ,则命令将如下所示

  • 须藤python2.7 setproxy.py 172.16.26.214 3128
  • 须藤python2.7 setproxy.py 172.16.26.214 3128 king queen

1
使用保管箱或副本存储脚本非常糟糕。您应该至少使用github或paste.bin
Quan To

0

您也可以尝试以下命令。

对于http连接-导出:

http_proxy="http://username:password@proxy_server_address:port_no"

对于https连接-导出:

https_proxy="https://username:password@proxy_server_address:port_no"

对于ftp和其他连接也同样如此。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.