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.
Serveur SSH
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
ssh-agent
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
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:
- .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
'.