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