Налаштувати проксі для APT?


72

Мені потрібно налаштувати проксі. Не було apt.confфайлу, etc/apt/тому я створив його за допомогою nano.

Але я не розумію, що мені там потрібно писати. Я написав http_proxy = http://lgn:pwd@192.168.1.254:8080/там, а потім перезапустив networking. Але коли я намагаюся apt-get update- не виходить.

Насправді я не розумію, який порт і ip я повинен писати у apt.confфайл (був приклад з 192.168.1.254ip і 8080port, тому я вирішив їх використовувати).


Існує зміна налаштувань проксі-сервера, щоб налагодити роботу з корпоративним проксі-сервером в ubuntu, відвідайте github.com/navinas33/docker_ubuntu.git, це працює ...
Navin,

Відповіді:


103

Щоб використовувати проксі, вам потрібен проксі-сервер. IP і порт повинні бути з цього проксі-сервера. Логін та pwd повинні бути вашим користувачем та паролем на проксі-сервері (якщо проксі вимагає входу).

З сайту help.ubuntu.com :

Метод файлу конфігурації APT

Цей метод використовує файл apt.conf, який знаходиться у вашому / etc / apt / директорії. Цей метод корисний, якщо ви хочете, щоб apt-get (а не інші програми) постійно користувався http-проксі.

У деяких установках файл apt-conf не буде налаштований. Відредагуйте файл apt-conf (або створіть новий, якщо у вас його ще немає) за допомогою редактора на ваш вибір.

sudo nano /etc/apt/apt.conf

Додайте цей рядок у файл /etc/apt/apt.conf (замініть свої дані на свою проксіадрес та проксіпорт).

Acquire::http::Proxy "http://yourproxyaddress:proxyport";

Збережіть файл apt.conf.

Якщо ваш проксі-сервер потребує логіна / пароля, замініть:

"http://yourproxyaddress:proxyport";

з:

"http://username:password@yourproxyaddress:proxyport";

використовуючи ім'я користувача та пароль з проксі-сервера.


6
Додавання окремого локального файлу /etc/apt/apt.conf.d/доцільніше, тому вам не доведеться редагувати основні файли конфігурації системи. Таким чином, якщо вони оновлюються у наступній версії пакета, вам не доведеться вручну об’єднувати локальні зміни.
трійка

Чи є в каталозі користувача файл проксі-проксі?
бекко

Ця відповідь потребує оновлення: gksudo застарілий. Спробуйте запропонувати інший редактор, не-GUI, або sudo -Hзамість gksudo, якщо ви використовуєте gedit або подібні.

24

Це більш загальна відповідь разом із apt config.

Оскільки існує багато місць для налаштування параметрів проксі, це може заплутатися на початку. Дозвольте підсумувати деякі речі та запропонувати деякі добрі практики.

Для консольних програм

Наприклад: wget, git і майже кожен консольний додаток, який підключається до Інтернету.

Якщо ви хочете налаштувати проксі кожен раз, коли ви з якоїсь причини запускаєте команди, тоді встановіть змінні середовища за допомогою наступних команд.

export http_proxy=http://DOMAIN\USERNAME:PASSWORD@SERVER:PORT/
export ftp_proxy=http://DOMAIN\USERNAME:PASSWORD@SERVER:PORT/

Якщо ви хочете використовувати одне і те ж налаштування кожного разу для всіх користувачів, тоді використовуйте їх.

Налаштування в bashrc

$ nano /etc/bash.bashrc
export http_proxy=http://DOMAIN\USERNAME:PASSWORD@SERVER:PORT/
export ftp_proxy=http://DOMAIN\USERNAME:PASSWORD@SERVER:PORT/

Налаштувати в /etc/environment

$ nano /etc/environment
https_proxy="http://myproxy.server.com:8080/" 
ftp_proxy="http://myproxy.server.com:8080/" ...

Налаштування за допомогою GUI

Відкрийте налаштування мережі та встановіть системний проксі-сервер для вашої системи.

Мережа -> Мережевий проксі -> Налаштувати -> Застосувати систему в усьому світі.

Але це може бути не корисно, якщо у вас є автентифікація для проксі.

Для влучного.

Вам потрібно зробити додаткову роботу для apt, оскільки, до речі, apt не підкоряється змінним оточення,

$ nano /etc/apt/apt.conf
Acquire::http::Proxy "http://USERNAME:PASSWORD@SERVER:PORT";
Acquire::https::Proxy "https://USERNAME:PASSWORD@SERVER:PORT";

Для всього, що не входить в цю область, повинна бути можливість налаштувати параметри проксі-сервера в самій програмі. Якщо не вибачте;)


2
Конфігурація в / etc / environment дуже важлива, тому що якщо ви просто налаштуєте http_proxy var для свого користувача, коли ви переходите в режим sudo (для таких речей, як "sudo apt-get update"), термінал зазвичай не зберігає поточне середовище vars; Дуже важливо перевірити свої налаштування: sudo echo $ http_proxy
belun

HTTP_PROXY(у верхньому регістрі), як видається, є стандартною назвою цієї змінної, хоча багато програм повернуться до нижньої версії. https_proxy(зверніть увагу на нижній регістр) - це правильне використання великих літер, але ви ніколи не використовуєте його в поодинці, як це робиться у вашому /etc/environmentвище. (Я думаю, що sце помилка.)
Curt J. Sampson,

Яка причина APT вимагати додаткової конфігурації проксі? Чому він просто не підкоряється / / etc / оточенню?
Лорено

22

Щось таке, що має працювати:

Acquire::http::proxy "http://lgn:pwd@192.168.1.254:8080/";
Acquire::https::proxy "http://lgn:pwd@192.168.1.254:8080/";

Чи є різниця, який порт і ip використовувати?
лапоти

Ну так, вам потрібно ввести правильні реквізити про проксі, яким ви хочете скористатися.
Денніс Каарсемейкер

е ... ip - це ip маршрутизатора? Я маю на увазі цей ip, який я використав із прикладу, але всі налаштування роутера, які я налаштовую в браузері за допомогою 192.168.1.1ip. Я повинен використовувати .1? а логін і пароль повинні бути коренем або маршрутизатором ubuntu?
лапоти

2
Ви навіть знаєте, що робите? Як ви знаєте, що вам потрібно використовувати проксі, якщо ви не знаєте його деталей?
Dennis Kaarsemaker

5
Тоді запитайте свого вчителя. Це не сайт "зроби домашнє завдання для мене".
Денніс Каарсемейкер

5

Що ви можете зробити, це також спробувати запустити команду sudo -E, яка прийме налаштування середовища. Здається, це працює для мене, коли я намагаюся оновити, додати apt-сховище та встановити. Приклад:

sudo -E add-apt-repository ppa:xxxxx

За словами @David Foerster, це працює лише для ручної взаємодії за допомогою оболонки, але вона не буде працювати над автоматизованими завданнями та службами, що викликають Apt без взаємодії з користувачем.


Це не допоможе в автоматизованих завданнях і службах, що викликають Apt, без взаємодії з користувачем.
Девід Фоерстер

Дякую за повідомлення, я додам ваш коментар до відповіді.
Френк Циу

2

Якщо вам потрібно використовувати apt за проксі, можливо, все інше також потребує конфігурації проксі. Мені подобається керувати своїми проксі-налаштуваннями в одному місці, яке було б змінною оточення.

Для цього я створюю a /etc/profiles.d/99-proxy.sh, який містить необхідні параметри проксі (наприклад, описаний останній час):

export http_proxy=http://DOMAIN\USERNAME:PASSWORD@SERVER:PORT/
export https_proxy=$http_proxy
export ftps_proxy=$http_proxy

таким чином, всі користувачі на цій машині мають доступ до проксі. (не забувайте chmod a+x)

Якщо ви використовуєте apt або apt-get як користувач, він може використовувати sudo. Як описав Франк Циу, sudo не передає змінних оточення. Для цього можна додати

Defaults env_keep += "http_proxy https_proxy ftp_proxy"

до (наприклад)

/etc/sudoers.d/00-environment 

або безпосередньо в

/etc/sudoers

файл. Таким чином вам потрібно керувати налаштуваннями проксі-сервера лише в одному місці.


0

Оригінальне запитання може бути в неправильному напрямку. Я вважаю, ви хочете налаштувати проксі-сервер в Linux?

Ну, це зовсім інше, ніж бажати використовувати наявний проксі з середовища Linux.

Якщо ваше питання є першим, скористайтеся будь-якими сторонніми службами для налаштування проксі-сервера в Linux. Прикладом можуть бути кальмари.

Прості команди для встановлення кальмарів:

$ sudo apt-get install squid3

Потім відредагуйте конфігурацію, щоб дозволити локальну мережу (у цьому випадку ваш власний апарат). $ sudo vi /etc/squid3/squid.conf

Додати / редагувати наступні рядки:

http_access allow local_net
acl local_net src 192.168.1.0/255.255.255.0

Припустимо, що ваш IP для машини Linux знаходиться в блоці 192.168.1 / 24.


Напевно, більшість читачів цього питання вже встановили кальмари;), також встановили http[s]_proxyзмінні ENV, і тепер задаються питанням, чому APT досі не працює. Але якщо ви отримуєте HTTP 403 з усього, окрім машини, squid- перегляньте ще раз усі випадки слова, denyякі не коментуються. (особливо з http_accessтієї ж лінії.
Томаш Гандор
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.