Points clés à retenir
- Utilisez le tunneling SSH inversé lorsque vous devez vous connecter à un ordinateur distant difficile à atteindre en raison de règles de pare-feu ou de configurations réseau complexes.
- Le tunneling SSH inversé vous permet d’établir une nouvelle connexion depuis votre ordinateur local vers l’ordinateur distant en utilisant la connexion existante.
- Configurez les clés SSH pour faciliter la connexion de l’ordinateur distant à l’ordinateur local sans avoir à demander un mot de passe.
Besoin de SSH sur un ordinateur Linux inaccessible ? Demandez-lui de vous appeler, puis explorez cette connexion pour obtenir votre propre session SSH à distance. Nous vous montrons comment.
Quand vous souhaiterez utiliser le tunneling SSH inversé
Parfois, les ordinateurs distants peuvent être difficiles à atteindre. Le site sur lequel ils se trouvent peut avoir mis en place des règles de pare-feu strictes, ou peut-être que l’administrateur local a mis en place des règles de pare-feu complexes. Traduction d’adresses réseau règles. Comment accéder à un tel ordinateur si vous devez vous y connecter ?
Établissons quelques étiquettes. Votre ordinateur est l’ordinateur local car il se trouve près de chez vous. L’ordinateur auquel vous allez vous connecter est l’ordinateur distant car il se trouve à un emplacement différent du vôtre.
Pour différencier les ordinateurs locaux et distants utilisés dans cet article, l’ordinateur distant est appelé « howtogeek » et exécute Ubuntu Linux (avec des fenêtres de terminal violettes). L’ordinateur local s’appelle « Sulaco » et exécute Manjaro Linux (avec des fenêtres de terminal jaunes).
Normalement, tu allumerais un Connexion SSH depuis l’ordinateur local et connectez-vous à l’ordinateur distant. Ce n’est pas une option dans le scénario de réseau que nous décrivons. Le problème de réseau spécifique n’a pas vraiment d’importance : cela est utile lorsque vous ne pouvez pas vous connecter directement en SSH à un ordinateur distant.
Mais si la configuration réseau de votre côté est simple, l’ordinateur distant peut se connecter à vous. Cependant, cela ne suffit pas à lui seul à répondre à vos besoins, car cela ne vous fournit pas une session de ligne de commande fonctionnelle sur l’ordinateur distant. Mais c’est un début. Vous disposez d’une connexion établie entre les deux ordinateurs.
La réponse réside dans le tunneling SSH inversé.
Qu’est-ce que le tunneling SSH inversé ?
Le tunneling SSH inversé vous permet d’utiliser cette connexion établie pour établir une nouvelle connexion de votre ordinateur local vers l’ordinateur distant.
Étant donné que la connexion d’origine provient de l’ordinateur distant, l’utiliser pour aller dans l’autre sens revient à l’utiliser « à l’envers ». Et comme SSH est sécurisé, vous insérez une connexion sécurisée dans une connexion sécurisée existante. Cela signifie que votre connexion à l’ordinateur distant agit comme un tunnel privé à l’intérieur de la connexion d’origine.
Nous arrivons ainsi au nom de « tunneling SSH inversé ».
Comment fonctionne le tunneling inversé SSH ?
Le tunneling SSH inversé repose sur l’ordinateur distant utilisant la connexion établie pour écouter les nouvelles demandes de connexion de l’ordinateur local.
L’ordinateur distant écoute sur un port réseau de l’ordinateur local. S’il détecte une requête SSH sur ce port, il relaie cette demande de connexion vers lui-même, via la connexion établie. Cela fournit une nouvelle connexion de l’ordinateur local à l’ordinateur distant.
C’est plus facile à mettre en place qu’à décrire.
Utilisation du tunneling inverse SSH
SSH sera déjà installé sur votre ordinateur Linux, mais vous devrez peut-être démarrer le démon SSH (sshd) si l’ordinateur local n’a jamais accepté de connexions SSH auparavant.
sudo systemctl start sshd
Pour que le démon SSH démarre à chaque redémarrage de votre ordinateur, utilisez cette commande :
sudo systemctl enable sshd
Sur l’ordinateur distant, nous utilisons la commande suivante.
- Le
-R
L’option (inverse) indiquessh
que de nouvelles sessions SSH doivent être créées sur l’ordinateur distant. - Le « 43022:localhost:22 » indique
ssh
que les demandes de connexion au port 43022 sur l’ordinateur local doivent être transmises au port 22 sur l’ordinateur distant. Le port 43022 a été choisi car il est répertorié comme étant non alloué. Ce n’est pas un numéro spécial. - dave@sulaco.local est le compte utilisateur auquel l’ordinateur distant va se connecter sur l’ordinateur local.
ssh -R 43022:localhost:22 dave@sulaco.local
Vous pouvez recevoir un avertissement indiquant que vous ne vous êtes jamais connecté à l’ordinateur local auparavant. Ou vous pouvez voir un avertissement lorsque les détails de connexion sont ajoutés à la liste des hôtes SSH reconnus. Ce que vous voyez, le cas échéant, dépend du fait que des connexions ont déjà été établies entre l’ordinateur distant et l’ordinateur local.
Vous serez invité à saisir le mot de passe du compte que vous utilisez pour vous connecter à l’ordinateur local.
Notez que lorsque la connexion a été établie, l’invite de commande passe de dave@howtogeek à dave@sulaco.
Nous sommes maintenant connectés à l’ordinateur local depuis l’ordinateur distant. Cela signifie que nous pouvons lui envoyer des commandes. Utilisons le who
commande pour voir les connexions sur l’ordinateur local.
who
Nous pouvons voir que la personne avec le compte utilisateur appelé Dave s’est connectée à l’ordinateur local et que l’ordinateur distant s’est connecté (en utilisant les mêmes informations d’identification utilisateur) à partir de l’adresse IP 192.168.4.25.
Connexion à l’ordinateur distant
Étant donné que la connexion depuis l’ordinateur distant réussit et qu’il écoute les connexions, nous pouvons essayer de nous connecter à l’ordinateur distant à partir de l’ordinateur local.
L’ordinateur distant écoute sur le port 43022 de l’ordinateur local. Donc, de manière quelque peu contre-intuitive, pour établir une connexion à l’ordinateur distant, nous demandons ssh
pour établir une connexion à l’ordinateur local, sur le port 43022. Cette demande de connexion sera transmise à l’ordinateur distant.
ssh localhost -p 43022
On nous demande le mot de passe du compte utilisateur, puis nous nous connectons à l’ordinateur distant à partir de l’ordinateur local. Notre ordinateur Manjaro dit joyeusement : « Bienvenue sur Ubuntu 18.04.2 LTS ».
Notez que l’invite de commande est passée de dave@sulaco à dave@howtogeek. Nous avons atteint notre objectif d’établir une connexion SSH à notre ordinateur distant difficile à atteindre.
Utiliser SSH avec des clés
Pour faciliter la connexion de l’ordinateur distant à l’ordinateur local, nous pouvons configurer des clés SSH.
Sur l’ordinateur distant, tapez cette commande :
ssh-keygen
Vous serez invité à saisir une phrase secrète. Vous pouvez appuyer sur Entrée pour ignorer les questions de phrase secrète, mais cela n’est pas recommandé. Cela signifierait que n’importe qui sur l’ordinateur distant pourrait établir une connexion SSH à votre ordinateur local sans être demandé un mot de passe.
Trois ou quatre mots séparés par des symboles constitueront une phrase secrète robuste.
Vos clés SSH seront générées.
Nous devons transférer la clé publique sur l’ordinateur local. Utilisez cette commande :
ssh-copy-id dave@sulaco.local
Il vous sera demandé le mot de passe du compte utilisateur auquel vous vous connectez, dans ce cas, dave@sulaco.local.
La première fois que vous effectuez une demande de connexion depuis l’ordinateur distant vers l’ordinateur local, vous devrez fournir la phrase secrète. Vous n’aurez pas à le saisir à nouveau pour les futures demandes de connexion, tant que cette fenêtre de terminal reste ouverte.
Tous les tunnels ne font pas peur
Certains tunnels peuvent être sombres et sinueux, mais le tunneling SSH inversé n’est pas trop difficile à parcourir si vous pouvez garder la relation entre l’ordinateur distant et l’ordinateur local directement dans votre tête. Puis inversez-le. Pour faciliter les choses, vous pouvez toujours configurer un fichier de configuration SSH qui vous permet de rationaliser des choses comme le tunneling ou le transfert d’agent SSH.
Vous pouvez lire l’article original (en Angais) sur le blogwww.howtogeek.com