问题描述
当我尝试使用Ubuntu软件中心安装软件时,我得到:
Failed to download repository information
Check Your Internet connection
当我尝试做apt-get install something
时,我得到:
407 Proxy Authentication Required
我使用需要user-name和密码的代理服务器。我通过在Networks代理中插入所需的数字并在系统范围内应用它来手动设置我的系统代理。我想现在的问题是插入我的user-name和密码。
当我通过Mozilla使用INTERNET时,它特意要求我提供我的user-name和密码。
最佳解决方案
要使您的apt-get正常工作,您应该编辑您的apt配置文件:
sudo -H gedit /etc/apt/apt.conf
并添加Acquire::http::Proxy "http://username:password@proxyhost:port/";
应严格遵循上面显示的语法。
如果您的用户名或密码中包含’@’,则此配置可能会失败。您还可以为其他协议(如FTP)添加代理配置。
更新:如果您的用户名或密码中包含’@’,则可以将其替换为%40示例:如果您的密码为@123
,请将其输入为%40123
。
对于其他字符,请参阅此Percent-encoding
次佳解决方案
首先通过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
第三种解决方案
如果您正在运行NTLM身份验证的企业代理,那么您可以使用CNTLM:
$ sudo apt-get install cntlm
$ sudo vi /etc/cntlm.conf
更改默认设置(域,用户名,密码和代理)。然后重启服务:
$ sudo /etc/init.d/cntlm restart
您现在可以使用localhost:3128
(默认CNTLM端口)作为Ubuntu的system-wide代理。
检查http://cntlm.sourceforge.net/以获取文档。
第四种方案
我认为本教程应该对您有所帮助。
Click on Network tab select Manual Proxy Configuration option and enter your proxy server,port details.If you have username,password click on Authentication to enter these details click on ok
(来自http://www.ubuntugeek.com/how-to-configure-ubuntu-desktop-to-use-your-proxy-server.html)
要为在shell中启动的所有程序调用它,我建议您使用gksudo gedit /etc/bash.bashrc
将其添加到/etc/bash.bashrc
,以便将system-wide应用于所有bash会话或user-space ~/.bashrc
。
就Synaptic而言,在Network
选项卡下的Preferences
中,您似乎可以为代理设置身份验证。不过,这似乎是针对Synaptic的。
第五种方案
一个不错的选择是使用Synaptic Package Manager,您可以在其中指定系统独立代理设置,还可以存储用户名和密码。
但是,这不会更改软件中心的代理。
第六种方案
如果您的用户名由空格分隔,则使用:
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
文件,但是…
它没有任何提示进行身份验证的机制。不知道为什么还没有人做出这一部分,但正因为如此,如果你需要身份验证,你需要以这种格式输入你的密码和用户名:
username:password@proxy.address
如果您的密码或用户名中包含任何特殊字符,包括@
或#
或!
等,您可能必须使用HTML-ized字符代码来表示任何特殊字符。请参阅此页面,了解如何:http://www.obkb.com/dcljr/charstxt.html