Debian
Générer une paire de clés privée/publique
ssh-keygen -t ed25519 -a 112 -f {keyPath}
génère une clé privée (utlisée pour la connexion du client ssh), ainsi qu’une clef publique, à ajouter au fichier authorized_keys de l’utilisateur sur le serveur. Soit en copiant la clé par scp
scp {keyPath.pub} user@host:/{pathToUsersHome}/.ssh
puis à executer sur le serveur en question
cd /{pathToUsersHome}/.ssh
cat {keyPath.pub} >> authorized_keys
Soit en les diffusant par un gestionnaire de configuration type Ansible, le principe reste le même, on ajoute la clé au fichier authorized_keys
Configurer le client ssh pour utiliser la clé privée
Le client ssh regarde par défaut dans le fichier ~/.ssh/config
Host {hostNickname}
Hostname {hostIPorName}
IdentityFile {keyPath}
User {user}
Port {port}
{hostNickname} accepte le wildcard comme nom (le Hostname n'est alors pas utile), cela permet de pouvoir chercher les clés privées dans plusieurs IdentityFile (on peut en inclure autant que nécessaire).
Configuration du service ssh pour n'accepter que les connexions par clé
/etc/ssh/sshd_config
PermitRootLogin prohibit-password
PasswordAuthentication no