在企业网络上通过代理进行身份验证以成功使用 apt-get 时遇到一些问题

在企业网络上通过代理进行身份验证以成功使用 apt-get 时遇到一些问题

如果这是一个基本问题,请原谅,我最近接管了我们部门的内部服务器,因此我不得不处理超出我(非常基本的)知识范围的问题。


语境

我们的服务器位于企业网络上,需要企业代理身份验证(例如输入企业用户名和密码)。该网络上的 Windows 机器上不存在此问题 - 当打开 Web 浏览器时,系统会提示用户进行身份验证。但是,当在 Linux 上使用浏览器时,系统不会提示用户进行身份验证,浏览器只会显示一条消息,提示需要进行身份验证。


问题 1 - 互联网接入很有用

目前,如果我需要查找某些内容,我必须走到另一层楼的办公桌上,因为我无法通过这台机器访问互联网,因为我无法*(*不知道如何)进行身份验证。如果能够进行身份验证,我可以使用网络浏览器,这将非常有用。


问题 2 - 软件包无法更新

当我尝试使用sudo apt-get update或执行更新时sudo apt-get install [package],出现错误,我认为这些错误是由于缺乏身份验证造成的。

执行后sudo apt-get update,我收到如下错误W: Failed to fetch [link] 401 Authorization Required。(由于某种原因,一些http://us.archive.ubuntu.comtrusty/ 源工作正常,但有些会抛出相同的错误)。

这是一个大问题,因为我需要能够更新服务器上的软件包。


采取的措施

  • 我已经通过sudo apt-get install cntlm(它是从少数几个随机工作的 ubuntu 存储库之一运行的)安装了 cntlm。
  • 我编辑了配置/etc/cntlm.conf并添加了我的用户名、域和代理。
  • 我启动了该服务(sudo /etc/init.d/cntlm start
  • 我测试了该服务(sudo cntlm -I -M http://www.google.com/),响应是Config Profile 1/4... Auth not required (HTTP code: 307) Your proxy is open, you don't need another proxy.

  • 我尝试sudo apt-get update再次执行但仍然收到相同的错误消息。(401 Authorization Required
  • (哎呀!我错了!我发现我需要手动配置 apt 代理设置......)
  • 我将该行添加Acquire::http::Proxy "http://localhost:3128";/etc/apt/apt.conf
  • 我重新开始吧cntlm。(sudo /etc/init.d/cntlm stopsudo /etc/init.d/cntlm start

  • 我表演了sudo apt-get update……然后它就击中了0% [Waiting for headers] [Waiting for headers] [Waiting for headers] [Waiting f——然后就停在了那里。
  • sudo apt-get clean在表演之前表演过sudo apt-get update- 它开始起作用然后停止了19% [Waiting for headers]
  • sudo apt-get clean在表演之前又表演了一次sudo apt-get update- 它开始起作用然后停在0% [Waiting for headers]
  • 我第三次尝试了(sudo apt-get cleansudo apt-get update),它停在20% [Waiting for headers]

  • 我研究了这个后续问题并发现AskUbuntu 上的答案这表明这可能是 IPv6 的问题,导致 ICS 在接收并发连接时暂停一段时间。
  • 我检查了该/etc/sysctl.conf文件,发现 IPv6 似乎已被禁用......(行net.ipv6.conf.all.disable_ipv6 = 1net.ipv6.conf.default.disable_ipv6 = 1net.ipv6.conf.lo.disable_ipv6 = 1已经在配置文件中。)
  • (我现在有点想不通!症状与假设的 IPv6 问题相符,但是如果它已被禁用,这似乎不可能是原因)
  • 我第四次sudo apt-get clean表演sudo apt-get update(怎么回事——为什么不呢?)这次它挂了24% [Waiting for Headers],但首先它影响了一堆存储库。一个曾经触发错误的存储库现在不会再触发错误了 ( http://cran.rstudio.com trusty /),但一个曾经触发错误的存储库现在触发了另一个错误,Received HTTP code 501 from proxy after CONNECT

答案1

您必须告诉 apt-get 使用您的代理。在 shell 中,输入:

导出 _http_proxy=htp://用户:密码@代理服务器:端口 apt-get 更新

如果有效的话,您可以使更改持久化:

修改 /etc/apt/apt.conf.d/proxy

进而

获取::http::Proxy "htp://用户:密码@代理服务器:端口";

相关内容