407需要代理validation

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

Failed to download repository information Check Your Internet connection 

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

 407 Proxy Authentication Required 

我使用需要用户名和密码的代理服务器。 我通过在Networks代理中插入所需的数字并在系统范围内应用它来手动设置我的系统代理。 我想现在的问题是插入我的用户名和密码。

当我通过Mozilla使用INTERNET时,它特意要求我提供我的用户名和密码。

为了让你的apt-get工作,你应该编辑你的apt配置文件:

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

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

应严格遵循上面显示的语法。

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

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

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

首先通过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)然后用它们的hex代码替换特殊字符和%前缀,如下所示:

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

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

如果您正在运行NTLM身份validation的企业代理,那么您可以使用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/获取文档。

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

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

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

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

就Synaptic而言,在Preferences Network选项卡下的“ Preferences选项”中,您似乎可以为代理设置身份validation。 不过,这似乎是针对Synaptic的。

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

代理设置

但是,这不会更改软件中心的代理。

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

 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/ 

不同之处在于增加了开启和关闭。

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

它没有任何提示进行身份validation的机制。 不知道为什么还没有人做出这一部分,但正因为如此,如果你需要身份validation,你需要以这种格式输入你的密码和用户名:

 username:password@proxy.address 

如果您的密码或用户名中包含任何特殊字符,包括@#! 或者其他什么,你可能不得不使用任何这些特殊字符的HTML化字符代码。 请参阅此页面,了解如何: http : //www.obkb.com/dcljr/charstxt.html

我也面临同样的问题。 然后我开始了解CNTLM。 现在它的效果非常好。 了解如何在此处配置CNTLM。

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

假设以下设置,您需要在相关位置更换

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

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

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

步骤详述如下:

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

下载脚本setproxy.py

https://pastebin.com/MbBHta8g

假设您已将Downloads文件夹中的setproxy.py保存setproxy.py

  • 打开终端类型
  • cd~ /下载

一般指挥:
sudo python setproxy.py proxy_address proxy_port proxy_username proxy_password
对于我们的例子

  • sudo python setproxy.py 172.16.26.214 3128 king

如果是简单代理而没有身份validation,则命令为:

  • sudo python setproxy.py 172.16.26.214 3128

如果您使用python2.7运行python 3及更高版本,那么命令将如下所示

  • sudo python2.7 setproxy.py 172.16.26.214 3128
  • sudo python2.7 setproxy.py 172.16.26.214 3128 king

您还可以尝试以下命令。

对于http连接 – 导出:

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

对于https连接 – 导出:

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

同样适用于ftp和其他连接。