«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. )

Я использую Ubuntu 10.10, установленную в Windows XP с использованием VirtualBox. Для интернет-соединений я использую прокси-сервер с аутентификацией. Я пытался использовать gnome-network-proxyинструмент для настройки параметров прокси в масштабе всей системы.

После того, как /etc/environmentэто было обновлено http_proxyпеременной с форматом http://my_proxy:port/, не было никаких данных аутентификации.

Я проверил это с Firefox. Браузер спросил мой логин и пароль, и все работало нормально. К сожалению, это не относится к apt-get. Я также попытался сделать, как описано здесь . К сожалению, это не работает.

Может быть, это как-то связано с тем, что прокси находится в домене Windows, есть идеи?

Мой прокси -сервер http-proxy . « - » здесь особый характер?

tommyk
источник
2
Использовали ли вы прокси-сервер глобальной сети в разделе «Система» -> «Настройки» -> «Сетевой прокси» и применили настройки глобально?
DemonWareXT
Вы можете попробовать простой в использовании инструмент с графическим интерфейсом GrrProxy
Renae Lider

Ответы:

53

Для моей корпоративной сети мой администратор дал имя прокси в формате:

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
свобода ископаемых
источник
Тем, кто прочтет это позже: это кажется хакером неподготовленным глазом, но это невероятно простой способ заставить корпоративный прокси подчиниться.
МакДафф
1
Это работает отлично. ЕСЛИ вы ранее не установили /etc/apt/apt.conf с неверной строкой Acquire. Я так и сделал, и все, что мне нужно было сделать, это вернуться и удалить эту строку.
Пропустить Хаффман
В Ubuntu 12.10 мне пришлось скопировать изменения, внесенные в /etc/apt/apt.conf.d/01proxy, в /etc/apt/apt.conf, прежде чем он заработал.
Стивен Недзельски,
даже с этими изменениями я не мог заставить это работать для меня с 12.04 ... но мне удалось заставить это работать, используя и конфигурируя ntlmaps и указывая файл apt.conf на промежуточный прокси там.
Monkut
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».

MneMoth
источник
(пользователи Windows используют / нет) Так вот почему я застрял :) Спасибо!
GaiusSensei
9

Попробуйте установить http_proxyв HTTP: // пользователь: пароль @ ProxyServer: порт /

редактировать:
если настройка 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
Да, он установит эту переменную глобально.
Случайный кодер
Как можно было бы закодировать двоеточие как часть пароля?
k0pernikus
/ etc / environment не работает с apt-get (или, по крайней мере, требует перезапуска;), изменение apt.conf имеет немедленный эффект
Danubian Sailor
Я могу подтвердить настройку «Ручная настройка прокси» и «Применить всю систему» ​​в Network работает с apt-get.
Уилл Шеппард
4

Я за MS ISA-прокси и использую Cntlm Authentication Proxy; у 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

tommyk
источник
'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. Добавьте эти 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`
    

    Теперь вы можете добавлять репозитории в Lucid и Natty, используя LANG = C add-apt-repository

    Пример:

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

Через Unixmen

donadony
источник
2

Как применить обновление apt-get или установить в Ubuntu? Я был за прокси-сервером и после установки Ubuntu я не смог обновить или установить что-либо с помощью команды apt-get. После поиска я обнаружил, что пакет apt был изменен, теперь в каталоге / etc / apt больше нет файла apt.conf.

Что я сделал, чтобы решить эту проблему:

Откройте терминал и файл

sudo -H gedit /etc/bash.bashrc

и добавьте внизу файла эти 2 строки:

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

Теперь сохраните и выйдите, теперь вы сможете обновлять, обновлять или устанавливать пакеты в Ubuntu

hhlp
источник
Я добавил экспорт, как вы предложили. Это все еще не работает. Теперь я получил другое сообщение об ошибке «Не удалось подключиться к extras.ubuntu.com:80 (91.189.88.33). - connect (110: Тайм-аут соединения)». <br> Странно то, что когда я ввожу те же настройки прокси в настройках Firefox, я могу просматривать веб-страницы.
Tommyk
@tommyk Вы можете опубликовать свой /etc/apt/sources.list и обновить свой вопрос здесь или попытаться удалить extras.ubuntu.com из своего /etc/apt/sources.list и выполнить обновление apt-get
hhlp
Я заменил свой sources.list списком по умолчанию с веб-страницы Ubuntu. Я все еще получаю ту же ошибку для каждого хранилища, указанного в этом файле.
Tommyk
2

Этот работал на меня!

(добавление прокси вручную из GUI через system-settings-> network и т. д. должно работать) Но если это не так, вы экспортируете переменную 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, который вы только что экспортировали.

Надеюсь, это поможет :)

Kohn1001
источник
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/";

^ ^ ^ ^ Пустая строка после 3-й строки прокси, не вводите эту строку. ^ ^ ^ ^

Джейсон
источник
1

Возникла такая же проблема после установки Ubuntu 18.04. То, что работало для меня, было:

  1. Откройте экран Network Proxy в настройках сети
  2. Выберите Manual и добавьте информацию о http и https прокси
  3. Дополнительно установите поле Ignore Hosts с помощью:
    https://extensions.gnome.org*, *.extensions.gnome.org*
  4. Перезапущенный Ubuntu

Что касается пункта 3, не уверен, работает ли добавление вышеупомянутой записи или нет, но этот шаг работает для меня

Vuzi
источник
0
  1. Запустите Synaptic (зайдите в Система -> Администрирование -> Synaptic в Gnome 2 или введите «synaptic» в Dash в Unity).
  2. В строке меню нажмите « Настройки» , а затем « Настройки» .
  3. Когда появится окно настроек, нажмите на вкладку Сеть .
  4. Выберите переключатель « Ручная настройка прокси » и введите информацию о прокси.
  5. Чтобы применить информацию аутентификации, нажмите кнопку Аутентификация и введите имя пользователя и пароль.
  6. Нажмите кнопку ОК, чтобы закрыть окно HTTP-аутентификации.
  7. Нажмите OK, чтобы закрыть окно настроек.
  8. Нажмите кнопку Обновить, чтобы обновить списки пакетов.

Обратите внимание, что это изменение параметра также повлияет на диспетчер обновлений .

NC Вебер
источник
0

Это однострочное решение сработало для меня:

sudo env http_proxy=http://<ip>:<port> apt-get update
Рахил
источник