Le message complet
** WARNING: connection is not using a post-quantum key exchange algorithm.
** This session may be vulnerable to "store now, decrypt later" attacks.
** The server may need to be upgraded. See https://openssh.com/pq.html
Il apparaît avant l'invite de connexion, sur stderr. La connexion se poursuit, et le code de sortie ne change pas. Il existe depuis OpenSSH 10.1 : vous pouvez donc le voir pour la première fois après la mise à jour de votre client, sur un serveur qui n'a pas changé du tout.
Ce que cela signifie
L'échange de clés crée le secret qui chiffre la session. Les algorithmes classiques, comme curve25519-sha256, sont sûrs face aux ordinateurs d'aujourd'hui. Un ordinateur quantique assez puissant pourrait les casser, et quelqu'un peut enregistrer le trafic chiffré dès maintenant pour essayer plus tard. C'est le "store now, decrypt later" du message.
L'avertissement ne signifie pas que quelqu'un vous attaque, que votre connexion est exposée aujourd'hui à une attaque quantique, ni que vos clés doivent être remplacées. L'enjeu est la durée pendant laquelle le contenu de vos sessions doit rester secret. Les mots de passe saisis dans une session ou les dumps de base de données copiés à travers elle sont le genre de choses à envisager.
Vérifier ce qui a été négocié
ssh -v user@server true 2>&1 | grep -E 'remote software version|kex: algorithm'
Face à un serveur qui déclenche l'avertissement :
debug1: Remote protocol version 2.0, remote software version OpenSSH_6.6.1p1 Ubuntu-2ubuntu2.13
debug1: kex: algorithm: curve25519-sha256@libssh.org
Et un bon résultat, sans avertissement :
debug1: kex: algorithm: mlkem768x25519-sha256
Les noms post-quantiques contiennent mlkem ou sntrup. Pour voir ce que prend en charge votre propre client :
ssh -Q kex | grep -E 'mlkem|sntrup'
Solution 1 : le serveur est trop ancien
Mettez OpenSSH à jour sur le serveur, ce qui signifie en général mettre à jour la distribution.
| Version du serveur | Prise en charge post-quantique |
|---|---|
| Antérieure à 9.0 | Pas par défaut |
| 9.0 et suivantes | sntrup761x25519-sha512@openssh.com, activé par défaut, aussi nommé sntrup761x25519-sha512 depuis la 9.9 |
| 9.9 et suivantes | Aussi mlkem768x25519-sha256 |
| 10.0 et suivantes | mlkem768x25519-sha256 préféré par défaut |
Les équipements réseau et les appliances qui ont leur propre implémentation SSH demandent une mise à jour du firmware par le constructeur. D'ici là, ou sur un serveur que vous ne pouvez pas modifier, voir la solution 3.
Solution 2 : un réglage retire les algorithmes
Un serveur récent peut quand même déclencher l'avertissement si un guide de durcissement a listé KexAlgorithms à la main, à une époque où ces algorithmes n'existaient pas. Sur le serveur :
sudo sshd -T | grep -i '^kexalgorithms'
Si mlkem768x25519-sha256 n'est pas dans la liste, trouvez la ligne KexAlgorithms dans /etc/ssh/sshd_config ou dans /etc/ssh/sshd_config.d/, et supprimez-la pour revenir aux valeurs par défaut, ou ajoutez l'algorithme. Puis validez et rechargez. Sur les systèmes de type Red Hat, le service s'appelle sshd :
sudo sshd -t && sudo systemctl reload ssh
Votre client peut aussi en être la cause. Vérifiez-le :
ssh -G server | grep -i '^kexalgorithms'
Cherchez une ligne KexAlgorithms dans ~/.ssh/config si cette liste ne contient aucun nom post-quantique.
Pour revoir les autres réglages qu'un tel guide a pu modifier, voir comment durcir sshd_config.
Solution 3 : faire taire l'avertissement pour un hôte
Quand la mise à jour est impossible et que vous avez accepté le risque pour cet hôte, ajoutez ceci à ~/.ssh/config :
Match host legacy.example.com
WarnWeakCrypto no-pq-kex
Limitez-le à cet hôte, pour que l'avertissement reste utile ailleurs. Pour une seule commande, utilisez ssh -o WarnWeakCrypto=no-pq-kex user@server. L'option -q le masque aussi, mais elle masque d'autres messages également.
Les scripts qui lisent stderr, ou qui considèrent toute sortie dessus comme un échec, peuvent se mettre à échouer après une mise à jour du client. Corrigez le serveur, ou définissez l'option pour cet hôte dans la configuration du script.
Questions
L'avertissement post-quantique est-il dangereux ?
Pas de danger immédiat. La connexion est chiffrée avec un algorithme classique. Le risque est que le trafic enregistré aujourd'hui soit déchiffré plus tard par un ordinateur quantique.
Quelle version d'OpenSSH fait disparaître l'avertissement ?
Un serveur en OpenSSH 9.0 ou plus récent propose sntrup761x25519, et à partir de 9.9 aussi mlkem768x25519-sha256. L'un ou l'autre suffit.
Comment désactiver l'avertissement pour un seul serveur ?
Ajoutez WarnWeakCrypto no-pq-kex dans un bloc Match host ou Host propre à ce serveur dans ~/.ssh/config.
Sources
- Cryptographie post-quantique, OpenSSH
- Notes de version d'OpenSSH
- ssh_config(5), WarnWeakCrypto
- sshd_config(5), KexAlgorithms