S'authentifier par SSH sur les machines de l'école

Comment configurer son environnement pour pouvoir accéder à distance aux services de l'école par SSH.

Lorsque l’on travaille à distance, il est parfois nécessaire d’utiliser des services situés sur les machines de l’école. C’est par exemple le cas lorsque les logiciels sont installés sur les machines de l’école, ou encore lorsque les services (par exemples des dépôts Git) ne sont accessibles que depuis les serveurs de l’école.

Cette page décrit comment configurer SSH pour faciliter ces cas d’utilisation. SSH ou Secure Shell permet de réaliser des échanges chiffrés entre machines. Le chiffrement est basé sur des paires de clés publiques/privées. La passerelle de l’école pour accéder en SSH est ssh.enseirb-matmeca.fr.

Générer des paires de clés SSH

La commande ssh-keygen permet de générer une paire de clés SSH et de les placer dans son répertoire ~/.ssh.

ssh-keygen -t ed25519
Generating public/private ed25519 key pair.
Enter file in which to save the key (/path/to/home/.ssh/id_ed25519):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /path/to/home/.ssh/id_ed25519
Your public key has been saved in /path/to/home/.ssh/id_ed25519.pub
The key fingerprint is:
SHA256:CestunfameuxTroisMatfincommeunOiseauHisseHo user@machine
The key's randomart image is:
+---[ED25519 256]---+
|o . ++BOO*       |
|+o..oB==*.o      |
|.+ .+oooo=       |
|.     .O.        |
|.     + S        |
|...              |
|o=E              |
|B+               |
|Bo.              |

Il est important d’ajouter une phrase-clé (passphrase) lors de la création de la clé. Cela assure que si un attaquant venait à mettre la main sur ce fichier, il ne pourrait pas l’utiliser directement. Il aura néanmoins la possibilité de tenter une attaque par force brute.

Deux fichiers sont produits :

Configurer l’algorithme de chiffrement

Plusieurs algorithmes de chiffrement sont utilisables, certains moins sécurisés que d’autres. OpenSSH implémente les algorithmes suivant :

La recommandation actuelle est d’utiliser l’algorithme ed25519. Il peut poser problème, car il est relativement récent, et pas forcément disponible sur tous les serveurs (mais il est disponible à l’ENSEIRB-Matmeca). Mais il est à l’heure actuelle l’un des plus sécurisés. Cet article sur goteleport.com donne quelques explications plus précises sur les différences de sécurité entre ces algorithmes.

Utiliser des clés SSH pour se logguer à l’école

Sur une machine donnée, le fichier .ssh/authorized_keys contient la liste des clés publiques autorisées à s’authentifier sur cette machine par SSH. Typiquement, les fichiers sont disposés ainsi :

Machine locale Machine distante
(e.g localhost.home) (e.g ssh.enseirb-matmeca.fr)
~/.ssh ~/.ssh
~/.ssh/id_ed25519 ~/.ssh/authorized_keys
~/.ssh/id_ed25519.pub  

Après avoir créé une paire de clés, il suffit d’ajouter la ligne correspondant à la clé publique dans le fichier .ssh/authorized_keys sur la machine distante. Cela permet alors de s’authentifier en utilisant la phrase-clé de cette clé plutôt que son login usuel.

La commande ssh-copy-id peut simplifier l’ajout de clés SSH sur les machines distantes, mais l’opération peut très facilement se faire à la main.

Le lien suivant offre une documentation plus détaillée.

Configurer un agent SSH

La commande ssh-agent permet de configurer un agent capable de retenir les mots de passe utilisés pendant une session. Il devient alors possible de ne taper son mot de passe qu’une seule fois, tout en authentifiant les sessions à venir. Typiquement, ces agents sont lancés par défaut sur les sessions usuelles. Il suffit alors d’entrer la commande :

ssh-add
ssh-add <key-file>

Le lien suivant offre une documentation plus détaillée.

Évidemment, si vous avez configuré un agent pour une session, mais que vous laissez cette session ouverte (par exemple en quittant votre bureau), il devient facile de s’authentifier à votre place si l’on a accès à votre clavier.

Utiliser des clés SSH avec Thor

Il devient maintenant possible de cloner les dépôts de la manière suivante :

git clone ssh://thor.enseirb-matmeca.fr/git/<repository>

Evidemment, il faut remplacer la partie <repository> par le nom d’un dépôt sur lequel on a les droits d’accès.

Autres configurations possibles

Pour aller plus loin …