Pour utiliser SSH (et dérivés tels que sftp) sans mot de passe, il faut ajouter votre clef sur le serveur. Nous aurons donc un ordinateur (manu-desktop) qui pourra se connecter à un serveur (server) par ssh sans avoir besoin de spécifier de mot de passe.
Notez qu’il existe des outils graphiques pour réaliser ces opérations (par exemple seahorse sous Gnome), mais je n’en parlerais pas.
Sur l’ordinateur client (manu-desktop)
La première chose à faire, si vous n’avez pas de clef pour votre machine, est d’en générer une
manu@manu-desktop:~$ ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/home/manu/.ssh/id_rsa): Created directory '/home/manu/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/manu/.ssh/id_rsa. Your public key has been saved in /home/manu/.ssh/id_rsa.pub. The key fingerprint is: cd:9e:bb:0a:1e:22:29:fa:e3:dc:12:72:8a:15:13:58 manu@manu-desktop manu@manu-desktop:~$ ls -l ~/.ssh total 8,0K 3367418 -rw------- 1 manu manu 1,7K 2009-01-15 13:26 id_rsa 3367419 -rw-r--r-- 1 manu manu 399 2009-01-15 13:26 id_rsa.pub manu@manu-desktop:~$ |
Ne mettez pas de passphrase et laisser les options par défaut pour la création de la clef. Il est aussi possible de spécifier les options via la ligne de commande:
ssh-keygen -qt rsa -b 1024 -C manu -f ~/.ssh/manu@manu-desktop.rsa -N "" |
La commande précédente crée une clef rsa (-t) avec le commentaire (-C) manu d’une longueur de 1024 bits (-b) dans le fichier ~/.ssh/manu@manu-desktop.rsa (-f) avec une passphrase (-N) vide.
Sur le serveur (server)
Le compte utilisateur de connexion doit exister. Il n’est pas obligé que ce soit le même identifiant que sur le client. Par exemple, sur le serveur, mon compte est nommé zephir.
[root@server]:# adduser zephir Ajout de l'utilisateur « zephir »... Ajout du nouveau groupe « zephir » (1002)... Ajout du nouvel utilisateur « zephir » (1002) avec le groupe « zephir »... Création du répertoire personnel « /home/zephir »... Copie des fichiers depuis « /etc/skel »... Entrez le nouveau mot de passe UNIX : Retapez le nouveau mot de passe UNIX : passwd : le mot de passe a été mis à jour avec succès Modification des informations relatives à l'utilisateur zephir Entrez la nouvelle valeur ou « Entrée » pour conserver la valeur proposée Nom complet []: N° de bureau []: Téléphone professionnel []: Téléphone personnel []: Autre []: Ces informations sont-elles correctes ? [o/N] o [root@server]:#
Sur l’ordinateur client (manu-desktop), fin des opérations
Il ne reste plus au client qu’à envoyer sa clef d’identification au serveur simplement par la commande suivante:
ssh-copy-id -i ~/.ssh/id_rsa.pub zephir@server |
Acceptez l’identification du serveur, le mot de passe est demandé (puisque vous n’avez pas encore envoyé la clef) et la clef est copiée dans le fichier /home/zephir/.ssh/authorized_keys.
Tentez la commande suivante (Ctrl+D pour sortir)
ssh zephir@server |
Vous ne devriez plus avoir de demande de mot de passe.
Sur le serveur, fin des opérations
Il est possible de sécuriser le serveur afin de n’accepter que les authentifications avec clef et sans demande de mot de passe (pour ssh. L’accès en local demandera toujours un mot de passe).
Ainsi, les tentatives d’attaque par force brute sont vouées à l’échec. MAIS, soyez conscient que vous ne pourrez plus vous connecter depuis une autre machine que celle pour laquelle vous avez envoyé la clef, pas plus que vous ne pourrez envoyer d’autres clefs.
Paramétrez le fichier /etc/ssh/sshd_config tel que ci dessous:
# Authentication: LoginGraceTime 120 PermitRootLogin yes StrictModes yes RSAAuthentication yes PubkeyAuthentication yes AuthorizedKeysFile %h/.ssh/authorized_keys # Change to no to disable tunnelled clear text passwords PasswordAuthentication no |
Relancez ensuite le serveur ssh pour prendre en compte les modifications.
Note sur la sécurité
L’accès au serveur est possible sans authentification par l’utilisateur manu depuis l’ordinateur client (manu-desktop). Si cet ordinateur est un portable et qu’il se fait voler, celui qui arrivera à se connecter avec l’identité de manu arrivera sans demande de mot de passe à se connecter au serveur !
Réfléchissez bien à l’utilisation de ce mode de fonctionnement avant de le mettre en place.
En cas de vol, il suffira de supprimer le fichier /home/zephir/.ssh/authorized_keys pour que la clef volée avec le portable ne soit plus opérationnelle.
Vous pouvez, de même, recréer et changer vos clefs d’identification lorsque vous le voulez en réutilisant les commandes données en début d’article.
Liens:
http://doc.ubuntu-fr.org/gnupg
http://doc.ubuntu-fr.org/ssh
Merci de votre aide !
Ping : Astuces d'Absolacom » Utilisation de Bazaar
Ping : Astuces d'Absolacom » Communiquer par un tunnel crypté SSH avec votre serveur comme relai (depuis Linux)