wget, curl e gerenciadores de pacotes atrás de proxy no Linux
Como configurar o wget para usar proxy (por arquivo, por variável de ambiente ou só para um comando), e onde configurar o mesmo proxy no curl, no dnf e no apt.
Olá pessoal, tudo bem?
Em muitas empresas, por questões de segurança, todo acesso à internet passa por um proxy, que filtra e bloqueia o que não pode ser acessado. Normalmente ficam liberados os sites de atualização dos sistemas, tanto Windows quanto Linux.
Para o yum/dnf do Red Hat e derivados, existe um arquivo de configuração próprio para isso. Mas, e o wget?
Opção 1: o arquivo de configuração do wget
O mais comum é usar variáveis de ambiente, mas na época encontrei uma forma de deixar isso fixo na configuração do próprio wget. Edite o arquivo global:
vi /etc/wgetrc
No final do arquivo, inclua o bloco com o endereço do proxy, usuário, senha e a ativação do uso do proxy:
use_proxy = on
http_proxy = http://ip_servidor_proxy:porta/
https_proxy = http://ip_servidor_proxy:porta/
proxy_user = UsuarioProxy
proxy_password = SenhaUsuarioProxy
Para valer só para o seu usuário, use o mesmo conteúdo em ~/.wgetrc.
/etc/wgetrc pode ser lido por todos os usuários do servidor. Se o proxy exige senha, prefira o ~/.wgetrc com permissão restrita (chmod 600 ~/.wgetrc) e, sempre que possível, um usuário de serviço só para isso, nunca a sua senha de rede.
Opção 2: variáveis de ambiente
O wget, o curl e a maioria das ferramentas de linha de comando respeitam estas variáveis:
export http_proxy="http://ip_servidor_proxy:porta/"
export https_proxy="http://ip_servidor_proxy:porta/"
export no_proxy="localhost,127.0.0.1,.empresa.local"
O no_proxy é o que mais faz falta: ele lista os endereços que não devem passar pelo proxy, como servidores internos. Para deixar fixo, coloque as linhas no ~/.bashrc ou em um arquivo em /etc/profile.d/.
Opção 3: só para um comando
# wget
wget -e use_proxy=on -e https_proxy=http://ip_servidor_proxy:porta/ https://site/arquivo.tar.gz
# curl
curl -x http://ip_servidor_proxy:porta -U UsuarioProxy https://site/arquivo.tar.gz
No curl, se você passar só o usuário no -U, ele pergunta a senha na hora, sem deixar nada no histórico.
E os gerenciadores de pacotes?
# dnf (RHEL, Rocky, Alma, Fedora): /etc/dnf/dnf.conf
proxy=http://ip_servidor_proxy:porta
proxy_username=UsuarioProxy
proxy_password=SenhaUsuarioProxy
# apt (Debian, Ubuntu): /etc/apt/apt.conf.d/95proxy
Acquire::http::Proxy "http://ip_servidor_proxy:porta/";
Acquire::https::Proxy "http://ip_servidor_proxy:porta/";
env | grep -i proxy quais variáveis estão realmente definidas na sessão. Com sudo, as variáveis do seu usuário normalmente não são repassadas, e esse é um motivo clássico de "funciona sem sudo e não funciona com sudo".
Considerações Finais
Proxy no Linux não é difícil, só é espalhado: cada ferramenta tem o seu lugar. Variável de ambiente resolve a maioria dos casos, o wgetrc deixa o wget sempre configurado e o dnf.conf e o apt.conf.d cuidam das atualizações. E cuidado com senha em arquivo que todo mundo pode ler.
Abraço e até a próxima!
:wq!
Post publicado originalmente em junho de 2016 e atualizado em novembro de 2026.

Comentários
Postar um comentário