¿Cómo ejecutar "sudo apt-get update" a través del proxy en la línea de comandos?

Respuestas:

91

En algunas versiones, sudo está configurado de tal manera que todas las variables de entorno se borran al ejecutar el comando. Para mantener el valor de su http_proxy y corregir esto, necesita editar / etc / sudoers, ejecute:

visudo

Luego encuentre una línea que diga:

Defaults env_reset 

y agregue después:

Defaults env_keep = "http_proxy ftp_proxy" 

Las cosas comenzarán a funcionar como se espera.

Gracias a kdogksu en los foros de Ubuntu por encontrar la solución para esto.

Para no solo reparar apt-get sino también utilidades gráficas de X11 como, por ejemplo, synaptic, mintintall, ...) la siguiente línea /etc/sudoersdebería hacer el trabajo:

Defaults env_keep = "http_proxy https_proxy ftp_proxy DISPLAY XAUTHORITY"
paulo.albuquerque
fuente
77
¿Sería necesario agregar también "https_proxy"?
TenLeftFingers
2
$ export http_proxy = " user: password @ proxy-server: port " y si su contraseña contiene caracteres especiales - cyberciti.biz/faq/…
Alex Punnen
2
¿Debería agregarse 'env_keep' después de 'env_reset' o colocarse en su lugar? Parecen opuestos entre sí, entonces, ¿tiene sentido mantener ambos?
Rodrigo
Los valores predeterminados env_keep = "http_proxy https_proxy ftp_proxy DISPLAY XAUTHORITY" me han funcionado. Gracias ! -
Ronald
1
Tropecé con esto después de mucha navegación. Esto resolvió mi problema.
Sudipta Basak
40

Utilizar este.

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

Esto es lo que yo uso. Funciona perfectamente.

Apt también permite colocar configuraciones individuales en archivos debajo /etc/apt/apt.conf.d/, por lo que esto tiene exactamente el mismo efecto que el anterior, pero puede ser más fácil de mantener si tiene otras líneas en el .confarchivo:

ubuntu@ubuntu:~$ cat /etc/apt/apt.conf.d/05proxy
Acquire::http::Proxy "http://Username:[email protected]:8080";
John Cartwright
fuente
55
Recomiendo editar esto para explicar cómo agregar esa línea al archivo de configuración. Intentar ejecutar esas líneas en la línea de comandos no lo hará. En este momento, esta respuesta se basa en una idea correcta, pero no será útil para un novato. Ni siquiera es del todo claro que usted está diciendo que la línea debe añadirse a apt.conf.
Eliah Kagan
increíble !!!! funciona como encanto
Shantanu Bedajna
En mi sistema tuve que crear un archivo en /etc/apt/apt.conf.d pero con pequeños detalles - funcionó muy bien
dldnh
1
@dldnh: Puedes crear el archivo /etc/apt/apt.confo usar colocar un archivo de configuración en /etc/apt/apt.conf.d... ¡o funciona! :-)
Paul Calabro
no olvides el punto y coma o obtendrásE: Syntax error /etc/apt/apt.conf:2: Extra junk at end of file
Florian Castellane
18

Lo que funcionó para mí fue:

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

Lo cual es un poco extraño porque simplemente exportando http_proxy y luego ejecutando sudo echo $ http_proxy imprimió obedientemente el valor exportado

Sam
fuente
1
$http_proxyse expande antes de que sudo incluso se ejecute.
Jeremy List
1
¡Esto funcionó muy bien en un Dockerfile!
Cory Ringdahl
No olvide el puerto para el proxy si es necesario :)
Gilad Peleg
11
export http_proxy=http://proxyusername:proxypassword@proxyaddress:proxyport
sudo apt-get update

La exportación no debería necesitarse sudoy, si su proxy es anónimo, simplemente abandone la proxyusername:proxypassword@parte.

Oli
fuente
:-(, recibo el error "¡Acceso al servicio de proxy web denegado!"
Renjith G
¿Funciona la misma configuración de proxy para algo simple como wget?
Oli
sí ... el mismo error que se repite ...
Renjith G
2
¿Qué pasa con la edición de /etc/apt/apt.conf con Acquire :: http :: Proxy " MYDOMAIN \ MYNAME: [email protected]: MYPORT"?
Renjith G
También puede agregar esto a su ~ / .bashrc. Horrible riesgo de seguridad sin embargo.
Scaine
3

Si es una configuración temporal , puede intentar esto: sudo bash -c 'http_proxy = "http: // <proxy_host>: <proxy_port> /" apt-get update'

Necesita esto, porque la variable de entorno debe definirse para la cuenta "raíz". Hacer y exportar antes no debería funcionar.

Para una configuración permanente , deberá modificar un archivo del sistema. Esto ya se describe en la siguiente respuesta sobre ¿Cómo verificar que el proxy de red realmente se aplica? .

Huygens
fuente
:-(, recibo el error "¡Acceso al servicio de proxy web denegado!"
Renjith G
Probablemente tenga que ingresar un nombre de usuario y contraseña, ¿verdad? Si es así, http_proxy debería tener la forma "http: // <user>: <pass> @ <host>: <port> /"
Huygens
3

Ubuntu es increíblemente hostil para autenticar proxies. Uso una computadora portátil Ubuntu en el trabajo y la cantidad de roturas es increíble.

Synaptic, Apt, Firefox, Chromium, etc.todos usan diferentes métodos para especificar un proxy y no hay ningún lugar para especificar credenciales de forma segura.

Algunos errores sobre el tema: 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

La sugerencia de Oli de utilizar una exportación es la única forma vagamente segura de hacerlo. A veces también es posible "evitar" el soporte de proxy si el servidor proxy está utilizando autenticación secundaria para minimizar la carga en los servidores de autenticación principales (por ejemplo, Active Directory). Aquí es donde el proxy autentica la primera conexión del proxy contra AD, luego, durante un período de tiempo establecido (generalmente 5 minutos), todas las demás conexiones son "confiables" para ser ese usuario. Por lo tanto, puede abrir Firefox, navegar por Internet (en cualquier lugar), luego probar su utilidad (wget, synaptic, lo que sea) especificando un proxy, pero deje el nombre de usuario en blanco.

Ubuntu es generalmente hostil a cualquier entorno corporativo simplemente porque permite que las contraseñas se lean tan fácilmente. Seahorse es uno de los principales culpables, pero Network Manager también es impactante: conéctese a cualquier red autenticada por PEAP y acaba de almacenar su contraseña en el applet para que cualquiera pueda ver quién puede tomar prestada su computadora portátil. Aparentemente, compartir computadoras portátiles se considera un sacrilegio en tierra de Linux, ya que los desarrolladores de Seahorse rechazaron las afirmaciones de inseguridad. Después de eso, no tuve el corazón para contactar a los desarrolladores del administrador de red.

Scaine
fuente
Recomiendo cntlm como una cura para esto. Maneja la autenticación con AD y usted configura todas sus configuraciones de proxy para usar 127.0.0.1 sin requerir ninguna credencial.
laz
Si necesita autenticarse con otra máquina, entonces el texto plano de la contraseña debe almacenarse. "cifrado" no agregaría ninguna seguridad, porque la clave de cifrado debe almacenarse en el mismo dispositivo para que las contraseñas estén disponibles.
Lista Jeremy
Jeremy, estás adoptando el mismo enfoque de seguridad de encendido / apagado que los desarrolladores de Seahorse. No estoy diciendo que esto sea imposible, solo que sea difícil. En este momento, robar credenciales de una computadora portátil Ubuntu desbloqueada es trivial: tal vez cinco clics y lo tienes. Lo mismo no es cierto para Windows: aún podría ser posible, pero incluso yo no sabría cómo hacerlo. No hay una manera simple de levantar una contraseña de una máquina con Windows en los 10 minutos o así, puede dejar una estación de trabajo desbloqueada por accidente. Haga lo mismo en Ubuntu y también podría entregar su renuncia. No es lo suficientemente bueno.
Scaine
3

¿Intentaste editar /etc/apt/apt.conf? Lo uso para usar apt detrás de nuestro proxy corporativo.

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

Creo que apt usa este valor a menos que $ http_proxy esté definido en su entorno de shell (es decir, $ http_proxy tiene prioridad).

Jon Brett
fuente
No estoy seguro de que apt.conf todavía esté en uso ... Cuando actualicé de 8.04 a 10.04 terminé con una actualización imposible, hasta que me deshice de la configuración del proxy en ese archivo, luego la configuración del proxy establecida en Synaptic comenzó a trabajar de nuevo ...
Little Jawa
Eso es extraño: uso apt.conf con 10.04. Creo que las configuraciones en este archivo son independientes de las configuradas en la interfaz gráfica de usuario del administrador de paquetes Synaptic.
Jon Brett
1
Sí, apt.confaún debe usarse. Puede ver qué ajustes de configuración cree que ha establecido mediante el uso apt-config dump.
Steve Beattie
1

Si desea ejecutar "sudo apt-get update" a través del proxy en la línea de comandos, use el siguiente comando,

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