Configurer son client SSH

Introduction

Il est possible de passer des options lorsqu'on invoque la commande ssh, par exemple la commande :

$ ssh -X -p 222 root@leconteneurduprof.netlib.re

indique que :

Seulement, c'est un peu lourd de devoir taper tout ça à chaque fois, et on peut définir des ensembles d'options dans un fichier de configuration.

Trouver et lire la documentation

Si on recherche dans le manuel toutes les pages dont le descriptif contient la chaîne de caractères "ssh" :

$ man -k ssh

on obtient quelque chose comme :

authorized_keys (5)  - OpenSSH SSH daemon
git-shell (1)        - Restricted login shell for Git-only SSH access
rlogin (1)           - OpenSSH SSH client (remote login program)
rsh (1)              - OpenSSH SSH client (remote login program)
slogin (1)           - OpenSSH SSH client (remote login program)
ssh (1)              - OpenSSH SSH client (remote login program)
ssh-add (1)          - adds private key identities to the authentication agent
ssh-agent (1)        - authentication agent
ssh-argv0 (1)        - replaces the old ssh command-name as hostname handling
ssh-copy-id (1)      - use locally available keys to authorise logins on a remote machine
ssh-keygen (1)       - authentication key generation, management and conversion
ssh-keyscan (1)      - gather SSH public keys
ssh-keysign (8)      - ssh helper program for host-based authentication
ssh-pkcs11-helper (8) - ssh-agent helper program for PKCS#11 support
ssh_config (5)       - OpenSSH SSH client configuration files
sshd (8)             - OpenSSH SSH daemon
sshd_config (5)      - OpenSSH SSH daemon configuration file

On voit qu'il existe une page de manuel de la section 5 (qui correspond aux formats de fichiers) ssh_config décrivant les fichiers de configuration du cliend SSH :

ssh_config (5)       - OpenSSH SSH client configuration files

Consultons cette page de manuel :

$ man 5 ssh_config

On y apprend :

En pratique

Dans la pratique, on écrit une succession de blocs Host indépendants pour décrire les différentes connexions ssh que l'on souhaite effectuer. Ainsi, la commande utilisée dans l'introduction :

$ ssh -X -p 222 root@leconteneurduprof.netlib.re

peut être remplacée par :

$ ssh plop

dès que votre fichier ~/.ssh/config contient le bloc :

Host plop
    Hostname leconteneurduprof.netlib.re
    ForwardX11 yes
    Port 222
    User root

Exemples issus du cours

Superposition des configurations

Le début du manuel explique aussi les priorités des options : si vous passez une option dans la ligne de commande SSH, sa valeur est prioritaire sur la valeur donnée dans votre fichier de configuration personnel ~/.ssh/config qui est elle-même prioritaire sur la configuration au niveau du système définie dans le fichier /etc/ssh/ssh_config, qui est elle-même prioritaire sur la valeur par défaut.

Ainsi, si par exemple le fichier /etc/ssh/ssh_config contient le bloc

Host *
    ForwardX11 yes

et que votre fichier ~/.ssh/config contient le bloc

Host conteneur
    Hostname exemple.netlib.re
    Port 222
    User root

alors, la commande

$ ssh guest@conteneur

va se connecter sur le port 222 de la machine dont le nom de domaine est exemple.netlib.re en tant qu'user guest, en activant l'affichage des applications graphiques distantes.

Au delà de la commande ssh

Ces configurations seront utilisées par les programmes qui utilisent le protocole SSH, comme scp, rsync ou même git, par exemple :

$ scp devoir.tar.gz guest@conteneur:/opt/
$ rsync -av conteneur:/etc/nginx/sites-available .
$ git clone gituser@conteneur:depot.git