====== 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]]