Utilisez la commande ssh-keygen pour générer une paire de clés d'authentification publique/privée. Les clés d'authentification permettent à un utilisateur de se connecter à un système distant sans fournir de mot de passe. Les clés doivent être générées séparément pour chaque utilisateur. Si vous générez des paires de clés en tant qu'utilisateur root, seul le root peut utiliser les clés.
L'exemple suivant crée les parties publique et privée d'une clé RSA :
# 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: SHA256:z6zTVQ/PJYt2o96DrVYClmfcqBG8Pdb8nzqY2m2HjeY root@geeklab The key's randomart image is: +---[RSA 2048]----+ | . | | o | | * = | | * O B .| | S. B + O.| | +. = = =| | .+ooB+.o| | ..oo=Bo+.| | .o.+*E=. | +----[SHA256]-----+
Utilisez l'option –t pour spécifier le type de clé à créer. Les valeurs possibles sont "rsa1 ” pour la version 1 du protocole et “dsa ", "ecdsa ", ou "rsa ” pour la version 2 du protocole.
Vous avez la possibilité de spécifier une phrase de passe pour chiffrer la partie privée de la clé. Si vous cryptez votre clé personnelle, vous devez fournir la phrase secrète chaque fois que vous utilisez la clé. Cela empêche un attaquant, qui a accès à votre clé privée et peut se faire passer pour vous et accéder à tous les ordinateurs auxquels vous avez accès, de pouvoir le faire. L'attaquant doit toujours fournir la phrase secrète.
La commande ssh-key de l'exemple a généré deux clés dans le répertoire ~/.ssh :
$ ls ~/.ssh id_rsa id_rsa.pub
Pour vous connecter ou copier des fichiers sur un système distant sans fournir de mot de passe, copiez la clé publique (~/.ssh/id_rsa.pub dans cet exemple) vers ~/.ssh/authorized_keys sur le système distant. Définissez la télécommande ~/.ssh autorisations de répertoire à 700 . Vous pouvez ensuite utiliser les outils ssh ou scp pour accéder au système distant sans fournir de mot de passe.
Pour autoriser plusieurs connexions, ajoutez la clé publique au fichier authorized_keys sur le système distant au lieu de la copier. L'exemple suivant ajoute la clé publique :
$ cat id_rsa.pub >> authorized_keys
Vous pouvez encore améliorer la sécurité du système en désactivant l'authentification par mot de passe standard et en appliquant l'authentification par clé. Pour ce faire, définissez l'option PasswordAuthentication sur no dans le fichier /etc/ssh/sshd_config fichier de configuration comme suit :
# vi /etc/ssh/sshd_config PasswordAuthentication no
Cela interdit les utilisateurs dont les clés ne sont pas dans les authorized_keys fichier de l'utilisateur spécifique sur le serveur pour se connecter via ssh. La connexion est refusée et le message suivant apparaît :
$ ssh host01 Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
La définition de l'option PasswordAuthentication sur yes, qui est la valeur par défaut, permet à un utilisateur d'utiliser un mot de passe pour l'authentification.