
Comment utiliser ses clés privées à distance, et donc sa Yubikey, tout en gardant les secrets en local, secrets et local.
Je parts d’une VM (machine virtuelle) “neuve” pour cette démo.
Remote: Si besoin.
sudo apt install openssh-server
Local: La connexion ssh fonctionne.
ssh foopgp@192.168.122.209
...
$ echo bonjour > top-secret.txt
$ cat top-secret.txt
bonjour
Local: Je rajoute la configuration dans ~/.ssh/config,
cat .ssh/config
host demo
hostname 192.168.122.209
User foopgp
Local: afin de me reconnecter plus facilement.
ssh demo
...
$ cat top-secret.txt
bonjour
Remote: J’importe ma clé publique, plusieurs solutions, exemple.
$ curl -s "https://keys.foopgp.org/pks/lookup?op=get&search=0x2C364630A2436D7E" \
| awk "/-----BEGIN PGP PUBLIC KEY BLOCK-----/,/-----END PGP PUBLIC KEY BLOCK-----/" \
| gpg --import
gpg: key 2C364630A2436D7E: 1 signature not checked due to a missing key
gpg: clef 2C364630A2436D7E : clef publique « piseb <piseb@mailo.com> (udid4=D9SrwuxesuMU90PM8xypxQe_48.78_002.19) » importée
gpg: Quantité totale traitée : 1
gpg: importées : 1
gpg: aucune clef de confiance ultime n'a été trouvée
Remote: Seule la publique est évidemment présente. On peut vérifier.
$ gpg --list-secret-keys
$ gpg --list-public-keys
...
Remote: Je rajoute “StreamLocalBindUnlink yes” à la configuration du serveur ssh, ci-dessous dans un fichier dédié, et je redémarre le service ssh:
sudo -i
echo "StreamLocalBindUnlink yes" > /etc/ssh/sshd_config.d/streamlocal.conf
systemctl restart sshd.service
L’option StreamLocalBindUnlink permet de spécifier si un fichier de socket de domaine Unix pour la redirection de port local ou distant doit être supprimé avant d’en créer un nouveau. Si le fichier de socket existe déjà et si StreamLocalBindUnlink n’est pas activée, sshd ne pourra pas rediriger le port vers le fichier de socket de domaine Unix. Cette option n’est utilisée que pour la redirection de port vers un fichier de socket de domaine Unix.
Pour la suite, on utilise le petit script qu’un gentil membre de l’association a publié sur codeberg. Il s’appelait à l’origine ssh_gpgforward ; il est aujourd’hui distribué comme paquet Debian autonome sous le nom sshwgpg (SSH With GnuPG
, v1.1+). Sur un système Djibian / Debian :
sudo apt install sshwgpg
(Note 2026-05 : dans djibian-gpgconfig ≥ 0.10, /usr/bin/ssh_gpgforward est conservé comme lien symbolique de compatibilité vers /usr/bin/sshwgpg, donc les scripts existants continuent de fonctionner.)
sshwgpg user@demo.org "hostname -f | gpg --clearsign | tee >( gpg --verify )"
Et l’on peut signer, déchiffrer etc. exactement comme en local. L’article Une seule clé physique pour toutes les machines d’Internet (mai 2026) déroule la variante Djibian tout-équipée de la même idée, plus le rebond SSH.
Sources: