„apt-get” nie działa z serwerem proxy

52

Dla polecenia

sudo apt-get update

Pojawia się następujący błąd:

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

Korzystam z systemu Ubuntu 10.10 zainstalowanego w systemie Windows XP za pomocą VirtualBox. Do połączeń internetowych używam serwera proxy z uwierzytelnianiem. Próbowałem użyć gnome-network-proxynarzędzia do ustawienia ustawień proxy w całym systemie.

Po /etc/environmentzaktualizowaniu tego przez http_proxyzmienną o formacie http://my_proxy:port/nie było danych uwierzytelniających.

Sprawdziłem to w przeglądarce Firefox. Przeglądarka poprosiła mnie o login i hasło i wszystko działało dobrze. Niestety nie było tak w przypadku apt-get. Próbowałem także zrobić, jak opisano tutaj . Niestety to nie działa.

Czy może to być związane z faktem, że proxy znajduje się w domenie Windows, jakieś pomysły?

Mój serwer proxy to http-proxy . Czy „ - ” jest tutaj znakiem specjalnym?

Tommyk
źródło
2
Czy używałeś globalnego serwera proxy w systemie -> Preferencje -> Serwer proxy i zastosowałeś ustawienia globalnie?
DemonWareXT
Możesz wypróbować łatwe w użyciu narzędzie GUI GrrProxy
Renae Lider

Odpowiedzi:

52

W mojej sieci korporacyjnej administrator otrzymał nazwę serwera proxy w formacie:

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

W przypadku naszej sieci Windows nasza nazwa użytkownika ma format:

[domain]\[username]

Na przykład:

http://mywindowsdomain\fossfreedom:[email protected]:8080

Zostało to dodane do następującego NOWEGO pliku (domyślnie nie istnieje):

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

Dodano następujący tekst:

Acquire::http::Proxy "http://mywindowsdomain\fossfreedom:[email protected]:8080";

Jeśli korzystasz z anonimowego serwera proxy, nie potrzebujesz danych logowania:

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

Zapisz plik, a następnie sprawdź, czy wszystko jest w porządku z:

sudo apt-get update
fossfreedom
źródło
Dla tych, którzy przeczytają to później: dla niewprawnego oka wygląda to na hack, ale jest to niewiarygodnie prosty sposób, aby korporacyjny serwer proxy był posłuszny.
macduff
1
To działa idealnie. O ile wcześniej nie ustawiłeś /etc/apt/apt.conf złą linią Acquire. Właśnie to zrobiłem i wszystko, co musiałem zrobić, to cofnąć się i usunąć tę linię.
Pomiń Huffman
W systemie Ubuntu 12.10 musiałem skopiować zmiany wprowadzone w /etc/apt/apt.conf.d/01proxy do /etc/apt/apt.conf, zanim zadziała.
Stephen Niedzielski
nawet przy tych edycjach nie mogłem zmusić go do pracy z 12.04 ... ale udało mi się go uruchomić, używając i konfigurując ntlmaps i wskazując tam plik apt.conf na pośrednie proxy.
monkut
The program 'gksudo' is currently not installed. You can install it by typing: sudo apt-get install gksu(co oczywiście nie będzie działać bez skonfigurowanego serwera proxy ...) Na szczęście sudodziała dobrze.
TED,
13

Odkryłem, że NAZWA UŻYTKOWNIKA i HASŁO wprowadzone do apletu „Network Proxy” nie są zapisywane w pliku apt.conf. Musisz ręcznie dodać nazwę użytkownika i hasło w pliku /etc/apt/apt.conf.

Aplet „Network Proxy” przechowuje tylko nazwę hosta i port.

Podstawowa składnia to

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

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

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

Jeśli używasz nazwy użytkownika i hasła systemu Windows, postępuj zgodnie z następującymi wskazówkami:

User = Domain/Username

(użytkownicy systemu Windows /nie używają \)

Jeśli używasz silnego / złożonego hasła systemu Windows ze znakami specjalnymi, musisz użyć kodowania adresu URL dla wartości, na przykład „@” w haśle to „% 40”.

MneMoth
źródło
(użytkownicy systemu Windows używają / nie) Więc dlatego utknąłem :) Dzięki!
GaiusSensei
9

Spróbuj ustawić http_proxyna http: // user: pass @ ProxyServer: port /

edycja:
Jeśli ustawienie http_proxynie działa, spróbuj edytować apt.conf. W
Ubuntu apt.confjest pofragmentowany w /etc/apt/apt.conf.d/katalogu.
W tym katalogu edytuj /etc/apt/apt.conf.d/01ubuntu:

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

lub spróbuj ustawić go za pomocą Synaptic: Ustawienia -> Preferencje -> Sieć,
a następnie skonfiguruj ustawienia proxy w „Ręcznej konfiguracji proxy”.

Casual Coder
źródło
3
Masz na myśli plik / etc / environment?
tommyk
Tak, ustawi tę zmienną globalnie.
Casual Coder
Jak zakodować dwukropek jako część hasła?
k0pernikus,
/ etc / environment nie działa z apt-get (lub przynajmniej wymaga restartu;), zmiana apt.conf ma natychmiastowy efekt
Danubian Sailor
Mogę potwierdzić ustawienie „Ręczna konfiguracja serwera proxy” i „Zastosuj cały system” w Network działa z apt-get.
Czy Sheppard
4

Jestem za serwerem MS ISA proxy i korzystam z serwera proxy uwierzytelniania Cntlm; w apt.confmam 4 linie; Czytałem gdzieś, że ostatni wiersz musi być pusty, ale nie jestem tego pewien. Działa idealnie:

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/";
diabeł
źródło
3

cntlm ma opcję wykrywania, która pomaga znaleźć właściwą konfigurację do pracy z uwierzytelnianiem NTLM w twojej sieci, spróbuj tego:

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

skopiuj i wklej wyniki do /etc/cntlm.conf

uruchom ponownie cntlm

Tommyk
źródło
'cntlm' is currently not installed. You can install it by typing: sudo apt-get install cntlm(co jeśli kurs nie będzie działał, jeśli mój serwer proxy nie jest ustawiony poprawnie)
TED
2
  1. Otwórz terminal i dodaj następujące wiersze do /etc/apt/apt.conf.

    gksu gedit /etc/apt/apt.conf
    
  2. Dodaj te 2 linie:

    Acquire::http::Proxy "http://user:pass@proxy-host:port/";
    Acquire::ftp::Proxy "http://user:pass@proxy-host:port/";
    
  3. Zapisz i wyjdź.

    Teraz apt-get updatei powinno działać za serwerem proxy, ale zauważysz, że wciąż coś nie działa, to jest add-apt-repositorypolecenie.

    Aby dodać repozytorium za serwerem proxy, wpisz następujące polecenia:

    # 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`
    

    Teraz możesz dodawać repozytoria w Lucid i Natty, używając LANG = C add-apt-repository

    Przykład:

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

Via Unixmen

donadony
źródło
2

Jak zastosować aktualizację apt-get lub zainstalować w Ubuntu? Byłem za serwerem proxy i po zainstalowaniu Ubuntu nie mogłem zaktualizować ani zainstalować niczego za pomocą polecenia apt-get. Po przeszukaniu stwierdziłem, że pakiet apt został zmieniony, teraz w katalogu / etc / apt nie ma już apt.conf.

Aby rozwiązać ten problem, wykonaj następujące czynności:

Otwórz terminal i plik

sudo -H gedit /etc/bash.bashrc

i dodaj na dole pliku te 2 wiersze:

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

Teraz zapisz i wyjdź, teraz będziesz mógł aktualizować, aktualizować lub instalować pakiety w Ubuntu

hhlp
źródło
Dodałem eksport zgodnie z sugestią. Nadal nie działa. Teraz otrzymałem inny komunikat o błędzie „Nie można połączyć się z extras.ubuntu.com:80 (91.189.88.33). - Połącz (110: Przekroczono limit czasu połączenia)”. <br> Dziwne jest to, że kiedy wprowadzę te same ustawienia proxy w preferencjach Firefoksa, mogę przeglądać strony internetowe.
tommyk
@tommyk można zamieścić swoje /etc/apt/sources.list i zaktualizuj swoje pytanie tutaj lub spróbuj usunąć extras.ubuntu.com z /etc/apt/sources.list i wykonać apt-get update
hhlp
Zamieniłem mój source.list na domyślny ze strony internetowej Ubuntu. Nadal pojawia się ten sam błąd dla każdego repozytorium wymienionego w tym pliku.
tommyk
2

Ten pracował dla mnie !!

(ręczne dodanie proxy z GUI poprzez ustawienia systemowe-> sieć itp. powinno działać) Ale jeśli nie, to eksportujesz zmienną env z terminala:

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

i ponownie dla https:

export https_proxy= <usually the same as the http>

Najważniejszą dodać -E: Aby uruchomić sudo apt-get installlub sudo apt-get updatenależy uruchomić:

sudo -E <command>

„-E” używa zmiennych środowiskowych użytkownika dla katalogu głównego (sudo), w tym przypadku właśnie http_proxy / https_proxy, które właśnie wyeksportowałeś.

Mam nadzieję, że to pomoże :)

Kohn1001
źródło
1

W przypadku serwera proxy BlueCoat format apt.confpliku musiałem wyglądać tak:

Acquire::http::proxy "http://Domain%5cUserID:[email protected]:80/";
Acquire::ftp::proxy "ftp://Domain%5cUserID:[email protected]:80/";
Acquire::https::proxy "https://Domain%5cUserID:[email protected]:80/";

^ ^ ^ ^ Pusta linia po trzeciej linii proxy, nie wprowadzaj tej linii. ^ ^ ^ ^

Jason
źródło
1

Miałem ten sam problem po zainstalowaniu Ubuntu 18.04. Dla mnie zadziałało:

  1. Otwórz ekran sieciowego serwera proxy w ustawieniach sieci
  2. Wybierz Ręcznie i dodaj informacje o serwerze proxy HTTP i https
  3. Dodatkowo ustaw pole Ignoruj ​​hosty za pomocą:
    https://extensions.gnome.org*, *.extensions.gnome.org*
  4. Zrestartowano Ubuntu

Co do punktu 3, nie jestem pewien, czy dodanie powyższego wpisu działa, czy nie, ale ten krok działa dla mnie

Vuzi
źródło
0
  1. Uruchom Synaptic (przejdź do System -> Administracja -> Synaptic w Gnome 2 lub wpisz „synaptic” w Dash in Unity).
  2. Na pasku menu kliknij Ustawienia , a następnie Preferencje .
  3. Kiedy pojawi się okno Preferencje, kliknij kartę Sieć .
  4. Wybierz przycisk opcji Ręczna konfiguracja serwera proxy i wprowadź informacje o serwerze proxy.
  5. Aby zastosować informacje uwierzytelniające, kliknij przycisk Uwierzytelnianie i wprowadź nazwę użytkownika i hasło.
  6. Kliknij przycisk OK, aby zamknąć okno Uwierzytelnianie HTTP.
  7. Kliknij przycisk OK, aby zamknąć okno Preferencje.
  8. Kliknij przycisk Załaduj ponownie, aby zaktualizować listy pakietów.

Pamiętaj, że ta zmiana ustawienia wpłynie również na Menedżera aktualizacji .

NC Weber
źródło
0

To jedno-liniowe rozwiązanie zadziałało dla mnie:

sudo env http_proxy=http://<ip>:<port> apt-get update
Raheel
źródło