Aller au contenu principal

SSH - Autosuggestions avec ZSH

Obtenez des autosuggestions SSH instantanées dans ZSH. Apprenez à installer le plugin zsh-ssh-config-suggestions et à afficher tous les alias de votre ~/.ssh/config avec un simple appui sur TAB.

· 5 minutes de lecture
Voir la source
Christophe
Amoureux de Markdown, WSL et Docker ~ Curieux insatiable.
Cet article existe aussi en anglais — lire la version originale.

Traduction automatique

Cette traduction a été produite par une IA. Elle peut contenir des contresens ou des maladresses, en particulier sur les termes techniques. En cas de doute, consultez l'article de référence en anglais — c'est lui qui fait foi.

Journal des modifications

Dernière
added a Docker-first demo to try before installing
updated plugins array; show only installed plugins

SSH - Autosuggestions avec ZSH

⚡
TL;DR

Arrêtez de mémoriser les IP de serveurs et les commandes SSH. Cet article vous montre comment fluidifier votre workflow SSH avec zsh-ssh-config-suggestions, un plugin ZSH qui fournit des autosuggestions pour vos connexions SSH. En s'appuyant sur votre fichier ~/.ssh/config, ce plugin vous permet de simplement taper ssh et d'appuyer sur Tab pour voir la liste de tous les alias de serveurs configurés. Découvrez comment installer et configurer ce plugin bien pratique pour vous connecter à vos serveurs plus vite et plus efficacement.

Il y a quelques semaines, j'ai publié un article SSH - Launch a terminal on your session without having to authenticate yourself à propos de la commande ssh sous Linux.

Je suis presque sûr que, comme moi, vous êtes fatigué de taper des lignes de commande comme ssh christophe@1.2.3.4 pour démarrer une connexion SSH parce que... vous savez, vous n'avez pas besoin de vous connecter sur un serveur ; non, vous avez besoin de vous connecter au serveur où tourne l'application ; vous connaissez le nom de l'application MyAmazingApp mais certainement pas le nom du serveur ni son IP.

C'est mon cas en tout cas.

Du coup, je dois me connecter à mon coffre-fort, dans lequel je liste toutes les informations sur les applications, les noms de serveurs, les identifiants à utiliser, ...

Ce serait plutôt cool de lancer ssh MyAmazingApp non ?

Deux articles voisins : Comment se connecter à votre serveur d'hébergement en SSH pour remplir ce ~/.ssh/config au départ, et Maîtrisez votre commande ssh et choisissez l'host dans une liste quand l'autocomplétion ne suffit plus — passé la cinquantaine d'hosts, une liste filtrable vaut mieux que TAB.

Voici le résultat : tapez ssh (avec l'espace à la fin) et appuyez sur TAB pour obtenir tous les alias de votre fichier ~/.ssh/config, en autosuggestion.

Utilisation de ssh-config-suggestions

Vous devez ajouter un espace après `ssh`

Pour que ça fonctionne, notez bien ceci : vous devez ajouter un espace après avoir tapé ssh et avant d'appuyer sur tab.

Pourquoi ça fonctionne​

Le plugin lit les alias Host déjà déclarés dans votre fichier ~/.ssh/config et les branche sur le système de complétion de ZSH — aucune liste séparée à maintenir, aucun coffre-fort à ouvrir, juste le fichier de configuration que vous avez déjà.

Ce serait vraiment sympa de pouvoir lancer ssh MyAmazingApp et hop, je suis connecté sur le serveur.

C'est là que le ~/.ssh/config est si utile (référez-vous à cet article) mais on peut aller un cran plus loin : ce serait génial de taper ssh et, par magie, que Linux vous montre la liste des alias définis dans le fichier ~/.ssh/config. Installons ça.

Le voir en action avec Docker​

Aucun serveur réel n'est jamais contacté par ce plugin — il lit uniquement les alias Host d'un fichier de configuration — ce qui en fait un test Docker en une commande parfaitement sûr.

Pourquoi Docker d'abord ?

Le Dockerfile ci-dessous installe Oh-My-Zsh et le plugin, l'active dans ~/.zshrc, et écrit le ~/.ssh/config exact montré plus bas. Rien ne change sur votre propre machine, et rien n'essaie de se connecter réellement où que ce soit.

Buildez-le et lancez-le :

>user@machine: ~/ssh-suggest-demo

$ docker build -t ssh-suggest-demo . [+] Building 20.7s (8/8) FINISHED ✔ exporting to image

$ docker run --rm -it ssh-suggest-demo 🐳 root ~ # ssh

Tapez ssh (avec l'espace à la fin) et appuyez sur TAB — les mêmes quatre alias de la section « Utilisez-le » ci-dessous (MyAmazingApp_PROD, MyAmazingApp_TEST, YourAmazingApp, LegacyApp) apparaissent immédiatement, lus directement depuis le ~/.ssh/config préparé dans l'image.

Installation du plugin zsh-ssh-config-suggestions​

On suppose ici qu'Oh-My-Zsh est déjà installé (voir Comment installer Oh-My-ZSH si ce n'est pas le cas). Clonez simplement le repository officiel en lançant cette commande : git clone https://github.com/yngc0der/zsh-ssh-config-suggestions.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-ssh-config-suggestions. Vous obtiendrez une copie locale du plugin dans votre dossier de plugins Oh-my-zsh.

Éditez ensuite le fichier ~/.zshrc, cherchez plugins=( et ajoutez zsh-ssh-config-suggestions à la liste. Vous aurez par exemple quelque chose comme ceci :

plugins=(
git
# ... your existing plugins
zsh-ssh-config-suggestions
)

Cet extrait configure un tableau de plugins pour Zsh en ajoutant le plugin zsh-ssh-config-suggestions à la liste existante. Le commentaire à la ligne 3 indique où placer tes plugins actuels, et zsh-ssh-config-suggestions sera chargé en même temps qu'eux.

Fermez votre console, ouvrez-en une nouvelle (ou lancez source ~/.zshrc pour charger votre modification) et c'est terminé.

Utilisez-le​

Imaginez que j'aie ce contenu dans mon ~/.ssh/config :

Host MyAmazingApp_PROD
Hostname 1.2.3.4
User usr_app_prod
Host MyAmazingApp_TEST
Hostname 6.7.8.9
User usr_app_test
Host YourAmazingApp
Hostname 1.2.3.4
User you
Host LegacyApp
Hostname 1.2.3.4
User legacy

Ce fichier de configuration SSH définit quatre hôtes distants avec leurs paramètres de connexion respectifs. Chaque entrée Host spécifie un alias mémorisable, l'adresse IP réelle de la machine (Hostname) et l'utilisateur à utiliser pour se connecter. Cela permet de se connecter simplement avec ssh MyAmazingApp_PROD au lieu de taper l'adresse IP et l'utilisateur complet.

Maintenant, je n'ai vraiment plus besoin de me souvenir de quoi que ce soit et je n'ai même plus besoin de connaître le nom des alias !

Je dois juste taper (c'est important) : ssh suivi de TAB et j'obtiens les mêmes suggestions que celles déjà montrées en haut de cet article.

Comme vous pouvez le voir, le système affiche la liste des hosts définis dans mon fichier de configuration ! Je peux alors éditer le fichier, ajouter une nouvelle application et hop, la prochaine fois, j'aurai son nom dans la liste. Je n'ai plus besoin de me connecter à mon coffre-fort. Sympa non ?

Ce n'est qu'un plugin parmi beaucoup d'autres ; si votre ~/.zshrc commence à grossir avec ce genre de personnalisations, jetez un œil à Au-delà du monolithe - Organiser son workflow ZSH comme un pro pour le garder maintenable.


🦋 Rejoignez la conversation sur BlueskyUn compte Bluesky gratuit est nécessaire pour aimer, repartager ou commenter. Ce bloc interroge l'API publique de Bluesky directement depuis votre navigateur (sans cookie, sans connexion) — votre adresse IP parvient donc aux serveurs de Bluesky dès que cette section se charge.

Chargement des commentaires…

Cet article vous a-t-il été utile ?
Avez-vous suivi les étapes de cet article ?