Servir Internet à la machine distante via une session SSH?

19

La machine via laquelle je me connecte à la machine distante / hôte (même réseau / LAN) a accès à Internet, mais pas l'hôte.

L'exécution de mises à jour et l'installation de packages sur l'hôte deviennent assez gênantes car je dois ensuite démarrer un proxy localement, puis configurer la machine distante pour l'utiliser.

Je me demandais donc s'il y avait un moyen plus simple de le faire via, peut-être, SSH ou autre chose?

J'ai une prise de conscience des complexités qui se trouvent à l'intérieur, mais j'étais curieux de savoir.

Utilisation plinkvia Emacs (si cela est important).

Doigts saignants
la source

Réponses:

21

Appelons la machine qui a accès à Internet hasinetet celle qui n'en a pas noinet.

Si vous pouvez établir une connexion SSH de noinet à hasinet

Vous pouvez le faire facilement avec le proxy SOCKS intégré d'OpenSSH. Cette commande configurera un proxy SOCKS lors de l' noinetécoute sur le port 1080:

noinet$ ssh -D 1080 hasinet

Si vous ne pouvez établir des connexions SSH qu'à noinet partir de hasinet

Vous pouvez exécuter le proxy SOCKS d'OpenSSH, hasinetpuis transférer un port de noinetà hasinet. Cela peut être fait intelligemment avec une seule commande comme ça (merci @Patrick):

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

Comment utiliser le proxy SOCKS

La façon dont vous utiliserez ce proxy dépendra de l'application. Certaines applications prennent en charge les proxys SOCKS intégrés. Si tel est le cas, vous devrez configurer votre application pour utiliser le proxy localhost:1080. Sinon, vous pouvez utiliser des chaînes proxy ou des chaussettes rouges, comme le suggère @sciurus. tsocks est une solution plus légère si vous n'avez besoin de fournir un accès réseau qu'à certaines commandes.

smammy
la source
1
Au lieu d'avoir à installer un proxy de chaussettes sur hasinet lorsque noinet doit sortir, juste ssh -t -D 1080 localhost ssh -R 1080:localhost:1080 noinet(oui une commande).
Patrick
2

Voici un moyen de le faire via SSH:

Sur la machine sans accès Internet, exécutez

ssh -D 8080 machine_with_internet_access

Vous pouvez remplacer 8080 par n'importe quel numéro de port inutilisé,

Ensuite, installez des logiciels tels que des chaînes proxy ou des chaussettes rouges , configurez-les pour se connecter à localhost: 8080 et exécutez un logiciel qui nécessite un accès Internet via eux.

sciurus
la source