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.

🚨 Senha em texto puro: o /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/";
💡 Dica: se algo funciona no navegador e falha no terminal, confira com 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