Tutoriaux > Linux > Sécuriser un accès SSH avec une paire de clés RSA : Génération des clés et application sur le serveur
Un accès SSH a beau être chiffré, il suffit de connaître le mot de passe pour pouvoir s'y connecter de n'importe où dans le monde. Les clés RSA permettent une sécurisation supplémentaire.
Pour générer une clé aléatoire, une simple ligne de commande va suffir : ssh-keygen -t rsa. Il faut générer la clé sur la machine cliente, et nous allons transférer les droits vers la machine distante par la suite
Une fois la commande tapée, vous pouvez choisir le chemin où sauvegarder la clé, ainsi que le mot de passe (si vous en voulez un) nécessaire pour l'utiliser.
Pouzy:~ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
56:dd:71:6f:f6:a0:2d:f0:dc:06:5a:1c:79:c3:01:c8 [email protected]
The key's randomart image is:
+--[ RSA 2048]----+
| . .o+o..|
| Eo.o+o.|
| o =.o.+|
| . * = +.|
| S . = + .|
| . o |
| |
| |
| |
+-----------------+
Comme le script nous l'a affiché, deux fichiers ont été créés. La clé privée (dans /root/.ssh/id_rsa) reste sur le serveur et ne doit en aucun cas être dévoilée, et la clé publique (dans /root/.ssh/id_rsa.pub) est celle que les machines qui veulent se connecter (clientes) devront utiliser pour pouvoir s'authentifier.
Pouzy:~ ls /root/.ssh
id_rsa id_rsa.pub known_hosts
Il faut maintenant autoriser l'utilisation de la clé publique pour se connecter au serveur.
C'est une étape plutôt simple, à savoir qu'il faut copier la clé publique dans le fichier ~/.ssh/authorized_keys. S'il n'existe pas encore, créez le
Il faut ajouter les clés publiques, au rythme d'une par ligne.
Ici, la commande pour simplement copier la clé publique dans le fichier authorized_keys :
Pouzy:~# cat ~/.ssh/id_rsa.pub | ssh [email protected] "cat - >> ~/.ssh/authorized_keys"
Et sur la machine distante on peut voir :
MachineDistante:~# ls ~/.ssh/
authorized_keys id_rsa id_rsa.pub known_hosts
MachineDistante:~# cd ~/.ssh
MachineDistante:~/.ssh# cat authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAd...
== [email protected]
On a tronqué la clé ici car ça ne sert pas à grand chose de l'afficher entièrement.
Mais elle est donc bien dans ~/.ssh/authorized_keys
La machine qui se connecte au serveur doit, elle, avoir sa clé privée. On se rappelle qu'elle a été générée dans ~/.ssh/id_rsa.
Pouzy:~/.ssh# cat id_rsa
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,45D10A33ACD9B6DA
qtCmfrwr20KKoszm0ubn7npSK76ziygHIJG78WtvZw54nf3He4eAyd8qpi2n8GQTlyt1L
+az/WEIQTiPYjGW0J8Di3x85XcF6zRmaOOuWL+r37nrSWVQIxj4JajuKlHq3X2RD
tfXX+Y60Pz+IOov8Sd1BsdCV33epgYOlzM1qctyHEXwJo4dXl9T5aPIyoO9pk2Ks
zV36pv6rdB1TR75TyP5UCkYHF8aBTdta4tNMv4qHvaex0s1+R0J8j5SL9MwhFmE/
-----END RSA PRIVATE KEY-----
On a encore tronqué la clé ici. Vous devez donc rapatrier ce fichier sur votre machine locale, qui devra l'utiliser lors de la connexion SSH. Pour le rapatrier, vous pouvez simplement copier/coller la clé dans un fichier texte par exemple
Si la machine locale est sous Linux, vous n'aurez aucun souci et un simple ssh [email protected]_distante utilisera la clé au besoin !
Pouzy# ssh [email protected]_distante
Authenticating with public key "openssh-key"
Passphrase for key "openssh-key":
Sous Putty, vous pouvez aussi générer des clés RSA. Nous allons utiliser simplement celles que nous venons de générer, vous pourrez trouver des tutoriaux sur internet expliquant comment générer des clés directement sous Windows.
Nous allons simplement convertir notre clé privée en clé compatible avec Putty. Pour cela, il vous faut télécharger PuttyGen
Ensuite, lancez-le, puis cliquez sur "Load File", retrouvez le fichier de la clé privée que vous avez sauvegardé plus haut dans un fichier texte. Une fois la conversion faite, vous verrez un message de confirmation :
Sauvegardez alors le fichier .ppk. Puis, dans Putty, lorsque vous vous connectez, il vous faut simplement lui dire d'utiliser le fichier que vous venez de sauvegarder, dans l'onglet Connection => SSH => Auth, il faut remplir le champ "Private key file for authentification"
Il vous suffit maintenant de vous connecter normalement, Putty utilisera la clé privée pour se connecter
C'est bien beau d'avoir une clé toute neuve qui fonctionne, mais pour l'instant on peut toujours se connecter au serveur SSH alternativement, simplement en tapant le pseudo et le mot de passe. Nous pouvons interdire ça, pour n'autoriser que les connexion par clé.
Attention, cette manipulation vous oblige a avoir toujours une copie de votre clé privée, car si vous la perdez il faudra intervenir physiquement sur le serveur pour en générer une nouvelle ! Gardez la en deux endroits physiquement différents
Pour interdire l'authentification par mot de passe, il vous faut éditer le fichier /etc/ssh/sshd_config
Il faut éditer la variable PasswordAuthentication, pour la passer à no (et décommenter la ligne, qui l'est par défaut).
# Change to no to disable tunnelled clear text passwords
PasswordAuthentication no
Un redémarrage de sshd, et hop, le bruteforce de mot de passe ne sera plus possible !
/etc/init.d/ssh restart
Ainsi, si on essaie de se connecter avec Putty sans préciser de clé...
Par Pouzy
, Le 27 Avril 2010 à 15h45
Ce tutoriel est la propriété d'Aidoweb et ne peut en aucun cas être copié.
Crée un sujet sur le forum, et dis moi où tu coinces ! Je me suis peut-être mal expliqué
J'arrive pas a suivre le tuto, c'est moi qui suit un boulet ou il y a une erreur quelque part?