Notes concernant la mise en place d'une authentification par clé. L' authentification par clé est préférable à l'authentification par mot de passe. Elle augmente considérablement la sécurité du système.
Le serveur distant sur lequel on souhaite se connecter par clé doit être configuré pour accepter ce type d'authentification, c'est en général le cas par défaut. Pour vérifier, rechercher la directive PubkeyAuthentication dans le fichier /etc/ssh/sshd_config.
Remarque: dans le fichier de configuration /etc/ssh/sshd_config les directives commentées présentent leur valeur par défaut.
#PubkeyAuthentication yes
Pour générer une paire de clés, invoquer ssh-keygen:
$ ssh-keygen -t rsa -b 4096 -C username@domain.tld -f id_user_rsa
La paire de clé est propre au compte local pour lequel elle est générée. Elle est placée dans le dossier ~/.ssh. Elle permettra à l'utilisateur de s'authentifier sur le serveur ssh distant.
L'utilisateur doit copier la partie publique de sa paire de clés sur les machines distantes auxquelles il souhaite se connecter via ssh. Un script se charge de faire:
$ ssh-copy-id -i /chemin/man_cle/id_dsa.pub user@ip_machine
La commande suivante peut être utilisée pour copier la clé publique:
$ cat /path/to/my_key/id_dsa.pub | ssh -l login -p 2202 host.domain.net "cat - >> ~/.ssh/authorized_keys"
Lors de la procédure d'authentification par clé, la passphrase est demandée systématiquement. Pour changer ce comportement et se connecter automatiquement on peut utiliser un agent ssh. Le temps de la session, l'agent ssh garde en mémoire la passphrase et la fournit automatiquement lors de la procédure d'authentification.
Vérifier que l'agent ssh est accessible:
$ printenv | grep SSH SSH_AGENT_PID=1718 SSH_AUTH_SOCK=/tmp/keyring-vhsknS/ssh
La variable $SSH_AGENT_PID est bien déclarée, si ce n'est pas le cas:
$ ssh-agent $SHELL
La commande ssh-add permet de conserver la passphrase pour la clé passée en paramètre. Lorsqu'elle est invoquée sans argument elle charge les clés présentes dans le répertoire ~/.ssh/
$ ssh-add /path/to/id_dsa
Dans le fichier de configuration du serveur ssh /etc/ssh/sshd_config:
...
PermitRootLogin no
# Moins restrictif, permet un acces en root mais via clés
#PermitRootLogin prohibit-password
...
# Change to no to disable tunnelled clear text passwords
PasswordAuthentication no
...
# Spécifier quels utilisateurs peuvent se connecter
AllowUsers username builder@127.0.0.1
Voir les commandes spécifiques à la gestion des clés sur le wiki gestion-cles.