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.

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é:

  1. ma_clef_ca, clef privée à conserver dans ~/.ssh
  2. 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 racourci copy-id.

N'autorisez que la connexion par clefs, pour le serveur sshd(8):

/etc/ssh/sshd_config
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

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:

.ssh/config
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'.

  • net/ssh.txt
  • Dernière modification : 2023/12/20 18:11
  • de david