Retrouver les ports forwardés lors d'une connexion SSH
Introduction
openssh-client permet de définir dans le fichier de configuration la façon de se connecter à une machine. Par exemple :
En effectuant un ssh work-dev
, openssh-client va se connecter sur la machine monhostname
sur le port 7899
avec l’utilisateur myuser
.
De plus, il est possible de définir les ports qui seront forwardés de la manière suivante :
Par exemple, quand je suis en télétravail, j’effectue la commande ssh work-dev-with-ports
qui me permet d’accéder depuis le port 8086 de ma machine locale au port 8080 de ma machine distance. Celui-ci étant en http, j’y accède via mon navigateur sur http://localhost:8086
.
Problématique
Comment rappeller que le service est accessible via le port 8086 en local lors de la connexion ? Il serait utile d’afficher, lors de connexion, la liste des ports forwardés.
Solution
Pour faire cela, nous allons utiliser l’option LocalCommand
de SSH.
Celle-ci nous permet d’exécuter une commande sur la machine locale une fois que la connexion a été effectuée. Des caractères de substitutions seront disponibles pour créer notre commande, dont le nom de l’hôte utilisé pour se connecter dans la liste de commande.
Voici un extrait du man de ssh_config
:
Pour afficher la configuration lors de la connexion, il nous suffit donc d’exécuter la commande sed, qui va conserver seulement le texte contenu entre le nom d’hôte et la directive LocalCommand (qui sera à placer à la fin des commandes que nous voudrions voir apparaître la configuration lors de la connexion).
Voici un exemple de configuration permettant d’afficher la configuration lors de la connexion :
Le premier sed ne va conserver que les lignes depuis le nom de la configuration jusqu’à la configuration LocalCommand. Le second va supprimer la dernière ligne (contenant LocalCommand).
Lors de la connexion, SSH va afficher toute la configuration pour le Host sur lequel on vient de se connecter. Lors de la connexion, la sortie ressemblera à cela :
Il sera donc possible d’y ajouter des commentaires, qui seront visibles lors de la connection. De plus, cette modification n’est pas seulement utile pour afficher les ports forwardés, mais par exemple, pour afficher un message lors de la connexion sans devoir modifier la configuration de la machine distante.