ssh configuration ubuntu debian
Personnaliser le client SSH
SSH est un outil très pratique dans le monde de Linux. Il permet de faire beaucoup de choses entre machines via la ligne de commande, mais également via des interfaces graphiques grâce au X forwarding. On peut aussi faire des translation de port avec le port forwarding tout en restant sécurisé et crypté par la connexion SSH, sans oublier l'authentification par clé publique et privée et la compression des données.
Mais lorsque l'on collectionne les serveurs et les comptes utilisateurs cela devient vite problématique de savoir quelle clé utiliser, quel nom d'utilisateur pour s'identifier sur quel serveur…
Il convient donc de définir des alias pour chaque serveur en spécifiant automatique les choses qui ne changeront pas, et cela est possible grâce au fichier ~/.ssh/config.
Voyons ensemble ce qui est possible de faire dans ce fichier, pour que cela fonctionne il suffit tout simplement de coller les exemples dans votre fichier ~/.ssh/config.
Si vous êtes administrateur d'un parc de serveur, vous pouvez également utiliser le fichier /etc/ssh/ssh_config pour mettre les paramètres à la disposition de tout les utilisateurs de la machine.
Un exemple simple
La plupart du temps pour se connecter sur une machine nous faisons :
$ ssh utilisateur@serveur.exemple.fr
Pour effectuer la même chose nous pouvons ajouter ceci au fichier ~/.ssh/config :
Host serveur Hostname serveur.exemple.fr User utilisateur
Il suffit ensuite de lancer la commande suivante dans une ligne de commande :
$ ssh serveur
S'authentifier avec une clé publique/privée
Par défaut, SSH cherche le fichier ~/.ssh/id_rsa ou ~/.ssh/id_dsa pour vous identifier sur un serveur. Mais si vous devez travailler avec plusieurs clés différentes, cela devient vite lassant de devoir spécifier le chemin vers le fichier par l'option -i. Encore une fois la configuration du fichier ~/.ssh/config va nous être très utile. Si nous souhaitons faire ceci :
$ ssh -i ~/.ssh/id_rsa_serveur_toto utilisateur@toto.exemple.fr
Il suffit d'ajouter ceci dans le fichier ~/.ssh/config :
Host toto Hostname toto.exemple.fr User utilisateur IdentityFile ~/.ssh/id_rsa_serveur_toto
Au final, il suffit simplement de taper :
$ ssh toto
Transfert de port
Il est possible en ssh de faire des transferts de port, pour cela il faut lancer cette commande :
$ ssh -L 9000:localhost:80 -i .ssh/id_rsa_serveur utilisateur@serveur.exemple.fr
En mettant ceci dans le fichier ~/.ssh/config :
Host serveur Hostname serveur.exemple.fr User utilisateur IdentityFile ~/.ssh/id_rsa_serveur Localforward 9000 127.0.0.1:80
pour au final taper ceci :
$ ssh serveur
Plus d'options
Les 3 exemples ci-dessus présentent les options les plus utiles pour le client SSH mais beaucoup d'autres existent et peut être certaines que vous avez l'habitude d'utiliser. Pour connaître la façon d'ajouter votre option favorite dans le fichier ~/.ssh/config n'hésitez pas à consulter le man :
$ man ssh_config