'apt-get'不适用于代理


52

对于命令

sudo apt-get update

我收到以下错误:

W: Failed to fetch http://ch.archive.ubuntu.com/ubuntu/dists/maverick-updates/multiverse/binary-i386/Packages.gz  
407  Proxy Authentication Required (The ISA Server requires authorization to fulfill the request. Access to the Web Proxy filter is denied. )

我正在运行使用VirtualBox在Windows XP上安装的Ubuntu 10.10。对于Internet连接,我正在使用具有身份验证的代理服务器。我尝试使用gnome-network-proxy工具在系统范围内设置代理设置。

/etc/environment通过http_proxy格式将其更新后,就http://my_proxy:port/没有身份验证数据。

我用Firefox检查过。浏览器询问我的登录名和密码,一切正常。不幸的是,并非如此。我也尝试按照这里的描述做。不幸的是,它不起作用。

可能与代理位于Windows域中这一事实有某种联系吗?

我的代理名称是http-proxy。“ - ”是这里的特殊字符吗?


2
您是否在系统->首选项->网络代理下使用了全局网络代理,并且已全局应用设置?
DemonWareXT 2011年

您可以尝试使用易于使用的GUI工具GrrProxy
Renae Lider

Answers:


52

对于我的公司网络,管理员为我提供了以下格式的代理名称:

http://[username]:[password]@[proxy-webaddress]:[port]

对于我们的Windows网络,我们的用户名格式为:

[domain]\[username]

例如:

http://mywindowsdomain\fossfreedom:password@askubuntu-proxy.com:8080

这已添加到以下新文件(默认情况下不存在):

gksudo gedit /etc/apt/apt.conf.d/01proxy

添加了以下文本:

Acquire::http::Proxy "http://mywindowsdomain\fossfreedom:password@askubuntu-proxy.com:8080";

如果使用匿名代理,则不需要登录凭据:

Acquire::http::Proxy "http://askubuntu-proxy.com:8080";

保存文件,然后检查是否一切正常:

sudo apt-get update

对于那些以后会读到此书的人:这对未经培训的人来说似乎是骇客,但它是使公司代理服从的极其简单的方法。
Macduff 2012年

1
这很完美。除非您之前用错误的Acquire行设置了/etc/apt/apt.conf。我就是这样做的,而我要做的就是返回并删除该行。
跳过霍夫曼2012年

在Ubuntu 12.10上,我必须将对/etc/apt/apt.conf.d/01proxy所做的更改复制到/etc/apt/apt.conf中,然后才能起作用。
Stephen Niedzielski 2013年

即使进行了这些编辑,我也无法在12.04上使用它...但是我设法通过使用和配置ntlmaps并将apt.conf文件指向那里的中间代理来使其正常工作。
13年

The program 'gksudo' is currently not installed. You can install it by typing: sudo apt-get install gksu(当然,如果没有设置代理服务器,那当然是行不通的...)幸运的是,它sudo工作得很好。
TED

13

我发现在“网络代理”小程序中输入的USERNAME和PASSWORD不会存储到apt.conf文件中,您必须在/etc/apt/apt.conf文件中手动添加用户名和密码。

“网络代理”小程序仅存储主机名和端口。

基本语法是

Acquire::http::proxy "http://User:Password@host:port/";

Acquire::ftp::proxy "ftp://User:Password@host:port/";

Acquire::https::proxy "https://User:Password@host:port/";

如果您使用Windows用户名和密码,请遵循以下建议:

User = Domain/Username

(Windows用户/不使用\

如果您使用带有特殊字符的Windows强密码/复杂密码,则必须对值使用URL编码,例如,密码中的“ @”将是“%40”。


(Windows用户使用/不是)所以这就是为什么我被卡住的原因:)谢谢!
GaiusSensei

9

尝试设置http_proxyhttp:// user:pass @ proxyserver:port /

编辑:
如果设置http_proxy不起作用,请尝试编辑apt.conf。在
Ubuntu apt.conf中,/etc/apt/apt.conf.d/目录是分散的。
在此目录中编辑/etc/apt/apt.conf.d/01ubuntu

APT {
    Acquire {
        http {
            Proxy "http://user:password@server:port";
        };
    };
};

或尝试使用Synaptic进行设置设置->首选项->网络
,然后在“手动代理配置”中设置代理设置。


3
您是指/ etc / environment文件吗?
tommyk 2011年

是的,它将全局设置此变量。
Casual Coder

如何将冒号编码为密码的一部分?
k0pernikus 2011年

/ etc / environment无法与apt-get配合使用(或至少需要重新启动;),更改apt.conf会立即生效
Danubian Sailor

我可以确认Network中的“手动代理配置”和“应用系统范围”设置可与apt-get一起使用。
Will Sheppard 2014年

4

我在使用MS ISA代理,并且正在使用Cntlm身份验证代理。在apt.conf我有4行; 我读过某处的最后一行必须为空,但我不确定。它完美地工作:

Acquire::http::proxy "http://127.0.0.1:3128/";
Acquire::ftp::proxy "ftp://127.0.0.1:3128/";
Acquire::https::proxy "https://127.0.0.1:3128/";

3

cntlm具有发现选项,可帮助您找到与网络的NTLM身份验证配合使用的正确配置,请尝试以下操作:

cntlm -I -M http://test.com

将结果复制并粘贴到/etc/cntlm.conf中

重新启动cntlm


'cntlm' is currently not installed. You can install it by typing: sudo apt-get install cntlm(如果我的代理设置不正确,如果课程不起作用...)
TED

2
  1. 打开终端并将以下行添加到/etc/apt/apt.conf。

    gksu gedit /etc/apt/apt.conf
    
  2. 添加以下两行:

    Acquire::http::Proxy "http://user:pass@proxy-host:port/";
    Acquire::ftp::Proxy "http://user:pass@proxy-host:port/";
    
  3. 保存并退出。

    现在 apt-get update,它应该在代理后面工作,但是您会注意到仍然有一些东西不起作用,那就是add-apt-repository命令。

    为了能够在代理后面添加存储库,请键入以下命令:

    # export https_proxy="http://192.168.1.5:8080"
    # sed -i 's/"keyserver.ubuntu.com"/"hkp://keyserver.ubuntu.com:80"/' /usr/share`/pyshared/softwareproperties/ppa.py`
    

    现在,您可以使用LANG = C add-apt-repository在Lucid和Natty中添加存储库

    例:

    root @ ubuntu:〜#LANG = C add-apt-repository ppa:motumedia / mplayer-daily

通过Unixmen


2

如何在Ubuntu中应用apt-get更新或安装?我在代理服务器后面,在安装Ubuntu之后,我无法使用apt-get命令更新或安装任何东西。搜索之后,我发现apt软件包已更改,现在/ etc / apt目录上没有apt.conf了。

我为解决此问题所做的工作如下:

打开终端和文件

sudo -H gedit /etc/bash.bashrc

并在文件底部添加以下两行:

#proxy 
export http_proxy=http://user:password@host:port/
export ftp_proxy=http://user:pass@host:port/

现在保存并退出,现在您将能够在Ubuntu中更新,升级或安装软件包


我已按照您的建议添加了出口。它仍然不起作用。现在,我收到了另一个错误消息“无法连接至extras.ubuntu.com:80(91.189.88.33)。-连接(110:连接超时)”。<br>奇怪的是,当我在Firefox首选项中输入相同的代理设置时,便可以浏览Web。
tommyk'1

@tommyk您可以在/etc/apt/sources.list中发布您的问题并在此处更新您的问题,还是尝试从/etc/apt/sources.list中删除extras.ubuntu.com并执行apt-get更新
hhlp 2011年

我已经用来自ubuntu网页的默认源替换了sources.list。对于此文件中列出的每个存储库,我仍然遇到相同的错误。
tommyk 2011年

2

这个一直在为我工作!!

(通过系统设置->网络等从GUI手动添加代理应该可行)但是如果不行,则可以从终端导出env变量:

export http_proxy=http://<your proxy url>:<proxy port>

并再次为https:

export https_proxy= <usually the same as the http>

添加-E最重要: 要运行,sudo apt-get install或者sudo apt-get update必须运行:

sudo -E <command>

“ -E”将您的用户环境变量用作根(sudo),因此您刚刚导出的http_proxy / https_proxy成为问题。

希望能帮助到你 :)


1

对于BlueCoat代理,对我而言,apt.conf文件的格式必须如下所示:

Acquire::http::proxy "http://Domain%5cUserID:Password@proxy.name.whatever:80/";
Acquire::ftp::proxy "ftp://Domain%5cUserID:Password@proxy.name.whatever:80/";
Acquire::https::proxy "https://Domain%5cUserID:Password@proxy.name.whatever:80/";

^ ^ ^ ^第三代理行之后的空白行,请勿输入此行。^^^^^


1

在安装Ubuntu 18.04之后出现了同样的问题。对我有用的是:

  1. 在“网络设置”中打开“网络代理”屏幕
  2. 选择“手动”并添加http和https代理信息
  3. 另外,使用以下选项设置“忽略主机”字段:
    https://extensions.gnome.org*, *.extensions.gnome.org*
  4. 重新启动Ubuntu

至于第3点,不确定添加上述条目是否有效,但是此步骤对我有用


0
  1. 启动Synaptic(在Gnome 2中转到“ 系统”->“管理”->“ Synaptic ,或在Unity的Dash中键入“ synaptic”)。
  2. 在菜单栏上,单击“设置”,然后单击首选项”
  3. 当“首选项”窗口出现时,单击“ 网络”选项卡。
  4. 选择手动代理配置单选按钮,然后输入您的代理信息。
  5. 要应用身份验证信息,请单击“ 身份验证”按钮,然后输入用户名和密码。
  6. 单击“确定”关闭“ HTTP身份验证”窗口。
  7. 单击“确定”关闭“首选项”窗口。
  8. 单击重新加载按钮以更新软件包列表。

请注意,此设置更改还将影响Update Manager


0

这种单线解决方案为我工作:

sudo env http_proxy=http://<ip>:<port> apt-get update
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.