Mon aide mémoire.
Ce post constitue un bloc note qui doit permettre de retrouver facilement les commandes utiles pour générer et gérer mes clés ssh et mes clés gpg ED25519.
Les clés gpg
J’ai profité de ce confinement pour renouveler mon trousseau gpg, et laisser pousser un peu ma barbe. Je l’utilise aussi bien pour signer et chiffrer mes messages et documents, que pour gérer mes mots de passe avec l’aide de l’excellent password-store. J’ai déjà parlé de ce soft ici.
Lister les clés à sa disposition
Générer sa clé avec l’algorithme ED25519
1
|
gpg --full-gen-key --expert
|
Choisissez l’option 9 (ECC et ECC), puis 1 (Curve 25519), la suite sera à adapter à vos besoins et usages.
Exporter sa clé privée
1
|
gpg --armor --export-secret-keys la.liste.de.chiffre.et.lettre.qu.affiche > ma.cle.privee.asc
|
Exporter sa clé publique
1
|
gpg --armor --export la.liste.de.chiffre.et.lettre.qu.affiche > ma.cle.publique.gpg
|
Importer une clé sur un autre périphérique ou la réimporter, et lui faire confiance
1
2
|
gpg --import BFCAE59DF0AD6232D53598B3895A46635439274A
gpg --edit-key BFCAE59DF0AD6232D53598B3895A46635439274A trust quit
|
Supprimer son ancienne clé privée
1
|
gpg --delete-secret-key BFCAE59DF0AD6232D53598B3895A46635439274A
|
Supprimer son ancienne clé publique
1
|
gpg --delete-key BFCAE59DF0AD6232D53598B3895A46635439274A
|
Je termine en évoquant la procédure de publication et de révocation: je ne le fais pas en ligne de commande. J’ai en effet eu de multiple crise de nerf, sans rien réussir de bon en essayant comme ça. Le plus simple est d’utiliser l’application libre OpenKeychain et les serveurs de keys.openpgp. D’ailleurs leur page web about est excellente.
Les clés ssh
Générer sa clé avec l’algorithme ED25519
1
|
ssh-keygen -t ed25519 -a 64
|
Envoyez sa clé sur le serveur
1
|
ssh-copy-id -i ~/.ssh/cle root@monsite.com -p 38151
|
L’option -p est à ajouter si vous avez modifié votre port ssh de 22 à 38151.
Renforcer sa configuration
Les options pour personnaliser et renforcer le protocole de communication ssh est sans limite. Je n’ai pas l’ambition d’être ici exhaustif, mais de décrire ce que j’utilise. Pour choisir mes options je me suis appuyé sur les recommandation de Mozilla.
Pour rappel ssh fonctionne en mode client– serveur, il y a donc deux endroits à configurer: celle du client se fait dans ~/.ssh/config
et celle de votre serveur se fait dans /etc/ssh/sshd_config
.
Configuration du client
# Host keys the client accepts - order here is honored by OpenSSH
HostKeyAlgorithms ssh-ed25519-cert-v01@openssh.com,ssh-rsa-cert-v01@openssh.com,ssh-ed25519,ssh-rsa,ecdsa-sha2-nistp521-cert-v01@openssh.com,ecdsa-sha2-nistp384-cert-v01@openssh.com,ecdsa-sha2-nistp256-cert-v01@openssh.com,ecdsa-sha2-nistp521,ecdsa-sha2-nistp384,ecdsa-sha2-nistp256
KexAlgorithms curve25519-sha256@libssh.org,ecdh-sha2-nistp521,ecdh-sha2-nistp384,ecdh-sha2-nistp256,diffie-hellman-group-exchange-sha256
MACs hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-512,hmac-sha2-256,umac-128@openssh.com
Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,aes128-gcm@openssh.com,aes256-ctr,aes192-ctr,aes128-ctr
Et pour se faciliter la vie quand on a plusieurs clés et/ou des ports ssh atypiques.
Host monsite
HostName monsite.com
User root
Port 38151
IdentityFile ~/.ssh/cle
Avec ces lignes, vous serez en mesure de vous connecter en tapant simplement ssh monsite
, très pratique 👍.
Configuration du serveur
1
|
nano /etc/ssh/sshd_config
|
Port 38151
# Supported HostKey algorithms by order of preference.
HostKey /etc/ssh/ssh_host_ed25519_key
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
KexAlgorithms curve25519-sha256@libssh.org,ecdh-sha2-nistp521,ecdh-sha2-nistp384,ecdh$
Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,aes128-gcm@openssh.com,a$
MACs hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com,umac-128-etm@openssh$
AuthenticationMethods publickey
UsePrivilegeSeparation sandbox
Le temps de la mise au point de votre configuration, vous pouvez assouplir les options de connexion afin de ne échouer pour de mauvaise raison en modifiant LoginGraceTime et MaxAuthTries LoginGraceTime 0m
, MaxAuthTries 10
. Surtout pour déterminer ce qui coince pendant vos essais, l’option -v ssh root@monsite.com -p 38151 -v
est très utile.
Pour aller plus loin