El mensaje completo
** 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
Aparece antes del prompt de inicio de sesión, por stderr. La conexión continúa y el código de salida no cambia. Empezó con OpenSSH 10.1, así que puede que lo veas por primera vez tras actualizar tu cliente, en un servidor que no ha cambiado en absoluto.
Qué significa
El intercambio de claves crea el secreto que cifra la sesión. Los algoritmos clásicos, como curve25519-sha256, son seguros frente a los ordenadores de hoy. Un ordenador cuántico lo bastante grande podría romperlos, y alguien puede grabar tráfico cifrado ahora e intentarlo más tarde. Eso es el "store now, decrypt later" del mensaje.
El aviso no significa que alguien te esté atacando, que tu inicio de sesión esté expuesto hoy a un ataque cuántico ni que tengas que sustituir tus claves. Lo que está en juego es durante cuánto tiempo debe mantenerse en secreto el contenido de tus sesiones. Las contraseñas escritas en una sesión o los volcados de bases de datos copiados por ella son el tipo de cosa en la que conviene pensar.
Comprueba qué se negoció
ssh -v user@server true 2>&1 | grep -E 'remote software version|kex: algorithm'
Contra un servidor que provoca el aviso:
debug1: Remote protocol version 2.0, remote software version OpenSSH_6.6.1p1 Ubuntu-2ubuntu2.13
debug1: kex: algorithm: curve25519-sha256@libssh.org
Y un buen resultado, sin aviso:
debug1: kex: algorithm: mlkem768x25519-sha256
Los nombres poscuánticos contienen mlkem o sntrup. Para ver qué admite tu propio cliente:
ssh -Q kex | grep -E 'mlkem|sntrup'
Solución 1: el servidor es demasiado antiguo
Actualiza OpenSSH en el servidor, lo que normalmente significa actualizar la distribución.
| Versión del servidor | Compatibilidad poscuántica |
|---|---|
| Anterior a la 9.0 | No por defecto |
| 9.0 y posteriores | sntrup761x25519-sha512@openssh.com, activado por defecto, también llamado sntrup761x25519-sha512 desde la 9.9 |
| 9.9 y posteriores | También mlkem768x25519-sha256 |
| 10.0 y posteriores | mlkem768x25519-sha256 preferido por defecto |
Los dispositivos de red y los equipos con su propia implementación de SSH necesitan una actualización de firmware del fabricante. Hasta entonces, o en un servidor que no puedes cambiar, mira la solución 3.
Solución 2: un ajuste elimina los algoritmos
Un servidor reciente puede seguir provocando el aviso si una guía de refuerzo listó KexAlgorithms a mano de antes de que existieran estos algoritmos. En el servidor:
sudo sshd -T | grep -i '^kexalgorithms'
Si mlkem768x25519-sha256 no está en la lista, busca la línea KexAlgorithms en /etc/ssh/sshd_config o en /etc/ssh/sshd_config.d/, y elimínala para volver a los valores por defecto o añade el algoritmo. Luego valida y recarga. En sistemas tipo Red Hat el servicio se llama sshd:
sudo sshd -t && sudo systemctl reload ssh
Tu cliente también puede causarlo. Compruébalo:
ssh -G server | grep -i '^kexalgorithms'
Busca una línea KexAlgorithms en ~/.ssh/config si esa lista no tiene nombres poscuánticos.
Para revisar los demás ajustes que pudo cambiar esa guía, consulta cómo reforzar sshd_config.
Solución 3: silenciarlo para un host
Cuando no se puede actualizar, y has aceptado el riesgo para ese host, añade esto a ~/.ssh/config:
Match host legacy.example.com
WarnWeakCrypto no-pq-kex
Limítalo a ese host, para que el aviso siga siendo útil en el resto. Para un solo comando, usa ssh -o WarnWeakCrypto=no-pq-kex user@server. La opción -q también lo oculta, pero oculta además otros mensajes.
Los scripts que leen stderr, o que tratan cualquier salida por él como un fallo, pueden empezar a fallar tras actualizar el cliente. Arregla el servidor, o fija la opción para ese host en la configuración del script.
Preguntas
¿Es peligroso el aviso post-cuántico?
No hay peligro inmediato. La conexión está cifrada con un algoritmo clásico. El riesgo es que el tráfico grabado hoy se descifre en el futuro con un ordenador cuántico.
¿Qué versión de OpenSSH quita el aviso?
Un servidor con OpenSSH 9.0 o posterior ofrece sntrup761x25519, y desde la 9.9 también mlkem768x25519-sha256. Cualquiera de los dos basta.
¿Cómo quito el aviso para un solo servidor?
Añade WarnWeakCrypto no-pq-kex en un bloque Match host o Host de ese servidor en ~/.ssh/config.
Fuentes
- Criptografía poscuántica, OpenSSH
- Notas de versión de OpenSSH
- ssh_config(5), WarnWeakCrypto
- sshd_config(5), KexAlgorithms