Sua abordagem não funciona devido ao cabeçalho Host:
do protocolo HTTP.
Em circunstâncias normais, o cliente HTTP (nesse caso, apt-get
) envia o cabeçalho Host: ftp.debian.org
, que permite ao servidor saber qual site carregar, caso o servidor esteja hospedando vários domínios.
O que você fez é tornar apt-get
send Host: localhost:39860
, o que provavelmente acaba não sendo nada no servidor remoto. Isso explica seus erros HTTP 404 não encontrados.
Resolução proposta
Coloque um proxy HTTP em seu host e disponibilize-o para seu contêiner por meio do encaminhamento de porta SSH.
- Instale o Squid na sua máquina conectada à Internet. Ubuntu / Debian:
sudo apt install squid
-
Escreva esta configuração em
/etc/squid/squid.conf
:http_port 8080 acl container src XXX.XXX.XXX.XXX/32 http_access allow container
Substitua
XXX.XXX.XXX.XXX
pelo endereço IP do seu contêiner. - Inicie ou reinicie o Squid com
service squid restart
. -
Conecte-se ao seu contêiner da sua máquina conectada à Internet com este comando:
ssh -L8080:localhost:8080 myRemoteUserName@myRemoteHostname
Substitua
myRemoteUserName@myRemoteHostname
pelas credenciais de login para seu contêiner. -
Dentro do contêiner, crie um novo arquivo chamado
/etc/apt/apt.conf.d/80proxy
com o seguinte conteúdo:Acquire::http::Proxy "http://localhost:8080/";
- Desde que a conexão da etapa 4 esteja ativa, o gerenciador de pacotes
apt
do seu contêiner agora pode fazer solicitações remotas.
Se você precisar adicionar restrições de site ao seu proxy, confira Restringir o acesso ao Squid a apenas um site .