Qu'est-ce que le tunnel SSH inversé? (et comment l'utiliser) - Moyens I/O

Qu’est-ce que le tunnel SSH inversé? (et comment l’utiliser)

Besoin de SSH sur un ordinateur Linux inaccessible? Demandez-lui de vous appeler, puis creusez cette connexion pour obtenir votre propre session SSH à distance. Nous vous montrons comment.

Quand vous voudrez utiliser le tunnel SSH inversé

Parfois, les ordinateurs distants peuvent être difficiles à atteindre. Le site sur lequel ils se trouvent peut avoir des règles de pare-feu strictes, ou peut-être que l’administrateur local a mis en place un complexe Traduction d’adresses réseau des règles. Comment accéder à un tel ordinateur si vous avez besoin de vous y connecter?

Établissons quelques étiquettes. Votre ordinateur est le local ordinateur car il est près de chez vous. L’ordinateur auquel vous allez vous connecter est le à distance ordinateur car il se trouve dans un endroit différent de vous.

Pour différencier les ordinateurs locaux et distants utilisés dans cet article, l’ordinateur distant s’appelle «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, vous allumeriez un Connexion SSH à partir de l’ordinateur local et connectez-vous à l’ordinateur distant. Ce n’est pas une option dans le scénario de mise en réseau que nous décrivons. Le problème de réseau spécifique n’a pas vraiment d’importance. Ceci est utile chaque fois que vous ne pouvez pas utiliser SSH directement sur un ordinateur distant.

Mais si la configuration réseau de votre côté est simple, l’ordinateur distant peut se connecter à vous. Cela seul n’est pas suffisant pour 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 tunnel SSH inversé.

Qu’est-ce que le tunnel SSH inversé?

Le tunnel SSH inversé vous permet d’utiliser cette connexion établie pour configurer une nouvelle connexion entre votre ordinateur local et l’ordinateur distant.

Parce que la connexion d’origine est venue de l’ordinateur distant à vous, en l’utilisant pour aller dans l’autre sens, vous l’utilisez «en sens inverse». Et comme SSH est sécurisé, vous placez 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.

En relation :  Avec iOS 15, pouvez-vous enfin abandonner votre portefeuille ?

Nous arrivons donc au nom de «tunnel SSH inversé».

Comment ça marche?

Le tunnel 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 demande SSH vers ce port, il relaie cette demande de connexion vers lui-même, vers le bas de 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é les connexions SSH auparavant.

sudo systemctl start sshd

Pour que le démon SSH démarre chaque fois que vous redémarrez votre ordinateur, utilisez cette commande:

sudo systemctl enable sshd

Sur l’ordinateur distant, nous utilisons la commande suivante.

  • Le -R (inverse) option dit ssh 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 de l’ordinateur local doivent être transmises au port 22 de l’ordinateur distant. Le port 43022 a été choisi car il est répertorié comme non alloué. Ce n’est pas un numéro spécial.
  • [email protected] est le compte d’utilisateur auquel l’ordinateur distant va se connecter sur l’ordinateur local.
ssh -R 43022:localhost:22 [email protected]

Vous pouvez recevoir un avertissement indiquant que vous ne vous êtes jamais connecté à l’ordinateur local auparavant. Vous pouvez également voir un avertissement lorsque les détails de la 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é à entrer 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 à partir de 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.

En relation :  Comment réduire la taille du fichier vidéo sans perdre en qualité

Bientôt: Comment déterminer le compte d’utilisateur actuel sous Linux

Connexion à l’ordinateur distant

Étant donné que la connexion à partir de l’ordinateur distant est réussie 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 avec 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

Nous sommes invités à entrer le mot de passe du compte utilisateur, puis connectés à l’ordinateur distant à partir de l’ordinateur local. Notre ordinateur Manjaro dit joyeusement: «Bienvenue dans Ubuntu 18.04.2 LTS».

connexion inversée du tunnel SSH à l'ordinateur distant

Notez que l’invite de commande est passée de dave @ sulaco à dave @ howtogeek. Nous avons atteint notre objectif d’établir une connexion SSH avec notre ordinateur distant difficile à atteindre.

Utilisation de 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é à entrer une phrase secrète. Vous pouvez appuyer sur Entrée pour ignorer les questions de phrase secrète, mais ce n’est pas recommandé. Cela signifierait que n’importe qui sur l’ordinateur distant pourrait établir une connexion SSH à votre ordinateur local sans être contesté pour un mot de passe.

Trois ou quatre mots séparés par des symboles formeront une phrase de passe 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 [email protected]

Vous serez invité à entrer le mot de passe du compte utilisateur auquel vous vous connectez, dans ce cas, [email protected]

La première fois que vous effectuez une demande de connexion entre l’ordinateur distant et l’ordinateur local, vous devrez fournir la phrase secrète. Vous n’aurez pas à le saisir à nouveau pour de futures demandes de connexion, tant que cette fenêtre de terminal reste ouverte.

boîte de dialogue de demande de phrase secrète

Bientôt: Comment créer et installer des clés SSH à partir du shell Linux

Tous les tunnels ne font pas peur

Certains tunnels peuvent être sombres et sinueux, mais le tunnel SSH inversé n’est pas trop difficile à naviguer si vous pouvez garder la relation entre l’ordinateur distant et l’ordinateur local directement dans votre tête. Puis inversez-le.

Moyens Staff
Moyens I/O Staff vous a motivé, donner des conseils sur la technologie, le développement personnel, le style de vie et des stratégies qui vous aider.