Créer des clefs pour vous connecter vos serveurs en SSH et, par sécurité, interdire la connexion par mot de passe.
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.
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
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
Cet 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
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
'.