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 containerSubstitua
XXX.XXX.XXX.XXXpelo 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@myRemoteHostnameSubstitua
myRemoteUserName@myRemoteHostnamepelas credenciais de login para seu contêiner. -
Dentro do contêiner, crie um novo arquivo chamado
/etc/apt/apt.conf.d/80proxycom o seguinte conteúdo:Acquire::http::Proxy "http://localhost:8080/"; - Desde que a conexão da etapa 4 esteja ativa, o gerenciador de pacotes
aptdo 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 .