Servir a Internet em uma máquina remota via sessão SSH?

19

A máquina através da qual estou transferindo o SSH para a máquina remota / host (mesma rede / LAN) tem acesso à Internet, mas o host não.

A execução de atualizações e a instalação de pacotes no host são bastante inconvenientes, pois preciso iniciar um proxy localmente e configurar a máquina remota para usá-la.

Então, eu queria saber se existe uma maneira mais fácil de fazer isso via, talvez, SSH ou outra coisa?

Percebo as complexidades que existem por dentro, mas estava curioso para saber.

Usando plinkatravés do Emacs (se importa).

Dedos Sangrentos
fonte

Respostas:

21

Vamos chamar a máquina que tem acesso à Internet hasinete a que não tem noinet.

Se você pode fazer uma conexão SSH de noinet para hasinet

Você pode fazer isso facilmente com o proxy SOCKS do OpenSSH. Este comando configurará um proxy SOCKS ao noinetescutar na porta 1080:

noinet$ ssh -D 1080 hasinet

Se você só pode fazer conexões SSH a noinet partir de hasinet

Você pode executar o proxy SOCKS do OpenSSH hasinete encaminhar uma porta de noinetpara hasinet. Isso pode ser feito inteligentemente com um comando como o seguinte (obrigado @Patrick):

hasinet$ ssh -D 1080 localhost -t ssh -R 1080:localhost:1080 noinet

Como usar o proxy SOCKS

Como você usa esse proxy dependerá do aplicativo. Alguns aplicativos têm suporte para proxies do SOCKS embutidos. Se for esse o caso, você precisará configurar seu aplicativo para usar o proxy localhost:1080. Caso contrário, você pode usar proxychains ou redsocks, como sugere o @sciurus. O tsocks é uma solução mais leve se você precisar fornecer acesso à rede para alguns comandos.

smammy
fonte
11
Em vez de ter que instalar um proxy de meias no hasinet quando o noinet precisar sair, apenas ssh -t -D 1080 localhost ssh -R 1080:localhost:1080 noinet(sim, um comando).
266 Patrick Patrick
2

Aqui está uma maneira de fazer isso via SSH:

Na máquina sem acesso à Internet, execute

ssh -D 8080 machine_with_internet_access

Você pode substituir 8080 por qualquer número de porta não utilizado,

Em seguida, instale software como proxychains ou redsocks , configure-os para conectar-se ao localhost: 8080 e execute um software que precise de acesso à Internet através deles.

sciurus
fonte