Wie führe ich "sudo apt-get update" über den Proxy in der Kommandozeile aus?

Antworten:

91

In einigen Releases ist sudo so konfiguriert, dass alle Umgebungsvariablen gelöscht werden, wenn der Befehl ausgeführt wird. Um den Wert für http_proxy beizubehalten und dieses Problem zu beheben, müssen Sie / etc / sudoers bearbeiten und Folgendes ausführen:

visudo

Dann finden Sie eine Zeile, die besagt:

Defaults env_reset 

und füge danach hinzu:

Defaults env_keep = "http_proxy ftp_proxy" 

Die Dinge werden wie erwartet funktionieren.

Vielen Dank an kdogksu in den Ubuntu-Foren für die Lösung .

Um nicht nur apt-get, sondern auch grafische X11-Utils wie zB synaptic, mintintall, ...) zu reparieren, sollte die folgende Zeile in /etc/sudoersden Job passen :

Defaults env_keep = "http_proxy https_proxy ftp_proxy DISPLAY XAUTHORITY"
paulo.albuquerque
quelle
7
Müsste auch "https_proxy" hinzugefügt werden?
TenLeftFingers
2
$ export http_proxy = " Benutzer: Passwort @ Proxy-Server: Port " und wenn Ihr Passwort Sonderzeichen enthält - cyberciti.biz/faq/…
Alex Punnen
2
Soll 'env_keep' nach 'env_reset' eingefügt oder an seine Stelle gesetzt werden? Sie sehen gegensätzlich aus. Ist es also sinnvoll, beide zu behalten?
Rodrigo
Standardeinstellungen env_keep = "http_proxy https_proxy ftp_proxy DISPLAY XAUTHORITY" hat bei mir funktioniert! Vielen Dank ! -
Ronald
1
Stolperte über diese nach vielem Stöbern. Das hat mein Problem gelöst.
Sudipta Basak
39

Benutze das.

ubuntu@ubuntu:~$ cat /etc/apt/apt.conf
Acquire::http::Proxy "http://Username:[email protected]:8080";

Das ist was ich benutze. Funktioniert perfekt.

Mit Apt können auch einzelne Einstellungen in Dateien darunter platziert werden. /etc/apt/apt.conf.d/Dies hat genau den gleichen Effekt wie oben, ist jedoch möglicherweise einfacher zu pflegen, wenn Sie andere Zeilen in der .confDatei haben:

ubuntu@ubuntu:~$ cat /etc/apt/apt.conf.d/05proxy
Acquire::http::Proxy "http://Username:[email protected]:8080";
John Cartwright
quelle
5
Ich empfehle, dies zu bearbeiten, um zu erklären, wie diese Zeile der Konfigurationsdatei hinzugefügt wird. Der Versuch, diese Zeilen in der Befehlszeile auszuführen, reicht nicht aus. Im Moment basiert diese Antwort auf einer korrekten Idee, ist aber für Anfänger nicht hilfreich. Es ist nicht einmal ganz klar , dass man diese Linie da sagen sollte hinzugefügt werden , zu apt.conf.
Eliah Kagan
genial !!!! funktioniert wie Charme
Shantanu Bedajna
Auf meinem System hatte ich eine Datei unter /etc/apt/apt.conf.d aber kleine Detail zu schaffen - hat super funktioniert
dldnh
1
@dldnh: Du kannst die Datei erstellen /etc/apt/apt.confoder eine Konfigurationsdatei platzieren in /etc/apt/apt.conf.d.... funktioniert entweder! :-)
Paul Calabro
Vergessen Sie nicht das Semikolon, sonst erhalten SieE: Syntax error /etc/apt/apt.conf:2: Extra junk at end of file
Florian Castellane
18

Das, was für mich funktioniert hat, war:

sudo http_proxy=http://yourserver apt-get update

Was ein bisschen seltsam ist, weil einfach http_proxy exportiert und dann sudo echo $ http_proxy ausgeführt wird, wobei der exportierte Wert gehorsam ausgedruckt wird

Sam
quelle
1
$http_proxywird erweitert, bevor sudo überhaupt ausgeführt wird.
Jeremy List
1
In einem Dockerfile hat das super geklappt!
Cory Ringdahl
Vergessen Sie nicht den Port für den Proxy, falls erforderlich :)
Gilad Peleg
11
export http_proxy=http://proxyusername:proxypassword@proxyaddress:proxyport
sudo apt-get update

Der Export sollte nicht erforderlich sein, sudound wenn Ihr Proxy anonym ist, lassen Sie das proxyusername:proxypassword@Teil einfach fallen .

Oli
quelle
:-(, ich erhalte die Fehlermeldung "Zugriff auf Web-Proxy-Dienst verweigert!"
Renjith G
Funktionieren die gleichen Proxy-Einstellungen für etwas Einfaches wie wget?
Oli
Ja ... der gleiche Fehler wiederholt sich ...
Renjith G
2
Was ist mit der Bearbeitung von /etc/apt/apt.conf mit Acquire :: http :: Proxy " MYDOMAIN \ MYNAME: [email protected]: MYPORT"?
Renjith G
Sie können dies auch zu Ihrem ~ / .bashrc hinzufügen. Schreckliches Sicherheitsrisiko.
Scaine
3

Wenn es sich um eine temporäre Konfiguration handelt , können Sie Folgendes versuchen: sudo bash -c 'http_proxy = "http: // <proxy_host>: <proxy_port> /" apt-get update'

Sie benötigen dies, da die Umgebungsvariable für das Konto "root" definiert werden muss. Vorheriges Ausführen und Exportieren sollte nicht funktionieren.

Für eine dauerhafte Konfiguration müssen Sie eine Systemdatei ändern. Dies wird bereits in der folgenden Antwort beschrieben: Wie wird überprüft, ob der Netzwerk-Proxy wirklich angewendet wird? .

Huygens
quelle
:-(, ich erhalte die Fehlermeldung "Zugriff auf Web-Proxy-Dienst verweigert!"
Renjith G
Sie müssen wahrscheinlich einen Benutzernamen und ein Passwort eingeben, oder? Wenn ja, sollte http_proxy die Form "http: // <user>: <pass> @ <host>: <port> /" haben
Huygens
3

Ubuntu ist unglaublich feindlich gegenüber der Authentifizierung von Proxys. Ich benutze einen Ubuntu-Laptop bei der Arbeit und die Anzahl der Brüche ist unglaublich.

Synaptic, Apt, Firefox, Chromium usw. verwenden unterschiedliche Methoden zum Festlegen eines Proxys und es gibt keinen Ort, an dem Anmeldeinformationen sicher angegeben werden können.

Einige Fehler zum Thema: https://bugs.edge.launchpad.net/ubuntu/+source/msttcorefonts/+bug/220070

https://bugs.edge.launchpad.net/ubuntu/+source/apt-cacher/+bug/198138

https://bugs.edge.launchpad.net/ubuntu/+source/apt/+bug/433827

https://bugs.edge.launchpad.net/ubuntu/+source/b43-fwcutter/+bug/683630

Olis Vorschlag, einen Export zu verwenden, ist die einzige vage sichere Möglichkeit, dies zu tun. Manchmal ist es auch möglich, die Proxy-Unterstützung zu "fudgen", wenn der Proxy-Server die sekundäre Authentifizierung verwendet, um die Belastung der Hauptauthentifizierungsserver (z. B. Active Directory) zu minimieren. Hier wird die erste Proxy-Verbindung vom Proxy gegen AD authentifiziert, und für einen festgelegten Zeitraum (normalerweise 5 Minuten) werden alle anderen Verbindungen als dieser Benutzer "vertrauenswürdig" eingestuft. Daher können Sie Firefox öffnen, im Internet surfen (wo auch immer) und dann Ihr Dienstprogramm (wget, synaptic, was auch immer) ausprobieren, indem Sie einen Proxy angeben, aber den Benutzernamen leer lassen.

Ubuntu ist im Allgemeinen feindlich gegenüber jeder Unternehmensumgebung, nur weil es das Lesen von Passwörtern so einfach macht. Seahorse ist ein Hauptschuldiger, aber Network Manager ist auch schockierend: Stellen Sie eine Verbindung zu einem PEAP-authentifizierten Netzwerk her, und Sie haben gerade Ihr Kennwort im Applet gespeichert, damit jeder sehen kann, wer möglicherweise Ihren Laptop ausleiht. Offenbar wird das Teilen von Laptops im Linux-Land als Sakrileg angesehen, da Seahorse-Entwickler die Behauptung der Unsicherheit zurückwiesen. Danach hatte ich nicht das Herz, mit den Entwicklern des Netzwerkmanagers Kontakt aufzunehmen.

Scaine
quelle
Ich empfehle Cntlm als Heilmittel. Die Authentifizierung mit AD wird durchgeführt, und Sie legen alle Proxy-Einstellungen so fest, dass 127.0.0.1 verwendet wird, ohne dass Anmeldeinformationen erforderlich sind.
Laz
Wenn Sie sich bei einem anderen Computer authentifizieren müssen, muss der Klartext des Kennworts gespeichert werden. "Verschlüsselung" bietet keine zusätzliche Sicherheit, da der Verschlüsselungsschlüssel auf demselben Gerät gespeichert werden muss, damit die Kennwörter verfügbar sind.
Jeremy List
Jeremy, Sie gehen beim Thema Sicherheit genauso vor wie die Seahorse-Entwickler. Ich sage nicht, dass ich dieses Zeug unmöglich machen soll, sondern dass ich es nur schwer machen soll. Momentan ist der Diebstahl von Anmeldeinformationen von einem nicht gesperrten Ubuntu-Laptop trivial - vielleicht fünf Klicks und Sie haben es. Das Gleiche gilt nicht für Windows - es könnte immer noch möglich sein, aber selbst ich würde nicht wissen, wie es geht. Es gibt keine einfache Möglichkeit, ein Kennwort in den nächsten 10 Minuten von einem Windows-Computer zu entfernen. Möglicherweise wird eine Arbeitsstation versehentlich entsperrt. Machen Sie dasselbe in Ubuntu und Sie können genauso gut Ihren Rücktritt einreichen. Es ist nicht gut genug.
Scaine
3

Hast du versucht zu bearbeiten /etc/apt/apt.conf? Ich benutze dies, um apt hinter unserem Corporate Proxy zu nutzen.

Acquire::http::proxy "http://user:password@host:port/";

Ich glaube, dass apt diesen Wert verwendet, es sei denn, $ http_proxy ist in Ihrer Shell-Umgebung definiert (dh $ http_proxy hat Vorrang).

Jon Brett
quelle
Ich bin mir nicht sicher, ob die apt.conf noch verwendet wird ... Als ich von 8.04 auf 10.04 updatete, endete ich mit einem unmöglichen Update, bis ich die Proxy-Einstellungen in dieser Datei entfernt hatte - dann begannen die in Synaptic eingestellten Proxy-Einstellungen zu Arbeit wieder ...
Little Jawa
Das ist seltsam - ich benutze apt.conf mit 10.04. Ich stelle fest, dass die Einstellungen in dieser Datei nicht mit den Einstellungen in der Synaptic Package Manager-Benutzeroberfläche übereinstimmen.
Jon Brett
1
Ja, apt.confsollte noch verwendet werden. Mithilfe von können Sie sehen, welche Konfigurationseinstellungen von apt als festgelegt erachtet werden apt-config dump.
Steve Beattie
0

Wenn Sie "sudo apt-get update" über den Proxy in der Befehlszeile ausführen möchten, verwenden Sie den folgenden Befehl:

sudo apt-get -o Acquire::http::proxy="http://user:password@host:port/" update;
Prashant Adlinge
quelle