"WARNING: connection is not using a post-quantum key exchange algorithm": qué significa

Tu cliente OpenSSH, versión 10.1 o posterior, negoció un intercambio de claves clásico con este servidor, porque el servidor, o un ajuste, no ofrece nada poscuántico. La conexión funciona y está cifrada. El riesgo es que el tráfico grabado pueda descifrarse dentro de años con un ordenador cuántico. La solución real es OpenSSH 9.0 o posterior en el servidor, idealmente 9.9 o posterior. Si aceptas el riesgo para un host, silénciala ahí con WarnWeakCrypto no-pq-kex.

Actualizada el . Reproducido con OpenSSH 10.3 en macOS contra un servidor OpenSSH 6.6 real en Ubuntu 14.04, y contra OpenSSH 10.0 en Debian 13 restringido a algoritmos clásicos. El aviso y WarnWeakCrypto se volvieron a comprobar con OpenSSH 10.6 en Alpine.

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 servidorCompatibilidad poscuántica
Anterior a la 9.0No por defecto
9.0 y posterioressntrup761x25519-sha512@openssh.com, activado por defecto, también llamado sntrup761x25519-sha512 desde la 9.9
9.9 y posterioresTambién mlkem768x25519-sha256
10.0 y posterioresmlkem768x25519-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

Más en Mensajes de error

Todas las guías