====== Utiliser des clefs avec ssh ======
Créer des clefs pour vous connecter vos serveurs en //SSH// et, par sécurité, interdire la connexion par mot de passe.
===== Créer une clef =====
Tapez simplement sur la machine cliente, depuis votre session utilisateur:
$ ssh-keygen -t ed25519 -f ma_clef_ca
Vous allez obtenir deux fichiers, que vous pouvez consulter par curiosité:
- ''ma_clef_ca'', clef privée à conserver dans ''~/.ssh''
- ''ma_clef_ca.pub'', clef publique à communiquer sur la cible
Par défaut, le commentaire de la clef publique sera ''utilisateur@machine.tds'', vous pouvez le changer avec l'option ''-C''.
Copiez la clef publique sur le serveur et ajoutez dans la liste des clefs autorisées de l'utilisateur cible:
$ cat ma_clef_ca.pub >> ~david/.ssh/authorized_keys
Supprimez ensuite le fichier contenant clef publique.
Ou, puisque vous savez maintenant ce qu'il faut obtenir, utilisez le [[https://www.ssh.com/ssh/copy-id|racourci copy-id]].
===== Serveur SSH =====
N'autorisez que la connexion par clefs, pour le serveur sshd(8):
PasswordAuthentication no
PermitEmptyPasswords no
# Change to no to disable PAM authentication
KbdInteractiveAuthentication no
=== Connexion ===
Il suffit d'appeler la connexion normalement, ou, si vous avez multiplié les utilisateurs et les clefs:
ssh -i ~toto/.ssh/ma_clef_ca toto@farfaraway.ddns.net
===== ssh-agent =====
Cet [[https://man.freebsd.org/cgi/man.cgi?query=ssh-agent&arch=default&format=html|outil]] va définir une session où vos clefs seront enregistrées et validées.
ssh-agent zsh
ssh add .ssh/ma_clef_ca
Enter passphrase for .ssh/ma_clef_ca:
Identity added: .ssh/ma_clef_ca (david@maclef.net)
A partir de ce moment et jusqu'à la fin de la session, vos clefs seront automatiquement transmises à ''ssh''.
Dans un script, il faut //obtenir// une sessions.
eval `ssh-agent -s`
ssh-add .ssh/ma_clef_ca
===== Client SSH =====
Vous allez probablement multiplier les clients et les cibles.
Pour vous y retrouver, créer dès le premier usage une entrée dans le fichier de configuration ssh, ssh_config(5), de votre utilisateur:
Host git.lapinbilly.eu
HostName poypoy.lapinbilly.eu
IdentityFile ~/.ssh/ma_clef_ca
Port 6666
AddKeysToAgent yes
L'option '''AddKeysToAgent''' va automatiquement enregistrer cette clef auprès de '''ssh-agent''' lors de la première connexion '''ssh'''.
===== En savoir plus =====
* [[https://www.ssh.com/ssh/key/|La documentation de SSH]]