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.
- Générer des paires de clés SSH
- Utiliser des clés SSH pour se logguer à l’école
- Utiliser des clés SSH avec Thor
- Autres configurations possibles
- Pour aller plus loin …
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 :
-
un fichier
id_ed25519.pub
qui est public (droits-rw-r--r--
), avec la forme suivante :ssh-ed25519 AAAAE2VjZHNhLXNoYTIQuiLEutCruLuStuCrumlzdHAyNTYAAABBBHvWWTunBUa4SihgaBRlX34rgAgLdbhQ6I2L0IxcSaqSupYl3JuV+9Rn9Vs/az0VYBrlzhktUCAbF5mL4ADsCHU= user@machine
-
et un fichier
id_ed25519
qui est privé (-rw-------
) avec la forme suivante :-----BEGIN OPENSSH PRIVATE KEY----- b3BlbnNzaC1rZXktdjEAAAAACmFlczI1Ni1jdHIAAAAGYmNyeXB0AAAAGAAAABDjvGgAU7 w1hzCs5Uo7IefHAAAAEAAAAAEAAABoAAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlz dHAyNTYAAABBBHvTousLesEtresHumainsNaissentLibresEtEgauxEnDroitsV+9Rn9V s/az0VYBrlzhktUCAbF5mL4ADsCHUAAACwnXistu+Z0CDR749zojluF27Sj+BmpRTmcJxD RCo8DWnm8Tme1PIVnwt3L1NnVitUXkkxsxVauiLM3s4TVBJQLhxXQmD2Ry3UYZ4GN1Pc7Q ZXL0Z9zNeT+xVu+4oBZtsmJ+Blu7UqOznRwO0Hg0cDmrale1Fgb68cb/m2Y1mwwVhAscbx LoHitqpP4Dg5JklZy1UVehEio9J+DYe6a2wGFA290VkCaebCYr6pM2EB6sI= -----END OPENSSH PRIVATE KEY-----
La clé privée reste sur la machine qui l’a générée. Elle n’est jamais censé aller sur le réseau. Si c’est bien le cas, il n’est pas possible de faire des attaques par force brute pour retrouver la phrase-clé.
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 :
rsa
(vieux, portable, mais demande une clé suffisamment longue pour être sécurisé)dsa
(vieux, non recommandé),ecdsa
,eddsa
(viaed25519
, récent)
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
-
Depuis n’importe quelle page sur thor, cliquer sur son login (en haut à droite), et sélectionner Configuration (ou Settings).
-
Copier la ligne entière de sa clé publique (typiquement de son fichier
~/.ssh/id_ed25519.pub
) et la coller sur une ligne du champ marqué Public keys. -
Cliquer sur Update. Si tous s’est passé correctement, un message en vert réconfortant s’affiche.
-
Éditer son fichier
~/.ssh/config
et ajouter les lignes suivantes :Host thor thor.enseirb-matmeca.fr Hostname thor.enseirb-matmeca.fr IdentityFile ~/.ssh/id_ed25519 IdentitiesOnly yes User git Port 2222 PasswordAuthentication no
Faire attention que la clé utilisée avec
IdentityFile
est la clé privée.
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
-
Il est possible de configurer son login de manière systématique dans le fichier de configuration de
git
(~/.gitconfig
).[url "https://<mon-login-a-l-ecole>@thor.enseirb-matmeca.fr/"] insteadOf = https://thor.enseirb-matmeca.fr/
… en remplaçant
<mon-login-a-l-ecole>
. Cela peut être utile si le<mon-login-a-l-ecole>
est différent du login utilisé sur la machine. -
Il est aussi possible d’utiliser la configuration précédente pour simplifier l’accès à ses dépôts
git
sur thor :[url "ssh://git@thor.enseirb-matmeca.fr:2222/"] insteadOf = ssh://thor.enseirb-matmeca.fr/
Cette configuration évite d’avoir à entrer systématiquement le login
git
et le port2222
lorsqu’on se connecte viagit
àthor.enseirb-matmeca.fr
(par le protocole SSH).
Pour aller plus loin …
- Une liste de recommandations proposée par l’ANSSI.