Estoy tratando de ssh a la máquina remota, el intento falla:
$ ssh -vvv [email protected]
OpenSSH_7.7p1, OpenSSL 1.0.2o 27 Mar 2018
.....
debug2: ciphers ctos: aes128-cbc,3des-cbc,aes192-cbc,aes256-cbc
debug2: ciphers stoc: aes128-cbc,3des-cbc,aes192-cbc,aes256-cbc
debug2: MACs ctos: [email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],hmac-sha2-256,hmac-sha2-512,hmac-sha1
debug2: MACs stoc: [email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],hmac-sha2-256,hmac-sha2-512,hmac-sha1
debug2: compression ctos: none,[email protected]
debug2: compression stoc: none,[email protected]
debug2: languages ctos:
debug2: languages stoc:
debug2: first_kex_follows 0
debug2: reserved 0
debug1: kex: algorithm: curve25519-sha256
debug1: kex: host key algorithm: rsa-sha2-512
Unable to negotiate with 192.168.100.14 port 22: no matching cipher found. Their offer: aes128-cbc,3des-cbc,aes192-cbc,aes256-cbc
Por lo que yo entiendo la última cadena del registro, las ofertas de servidor para utilizar uno de los siguientes algoritmos de cifrado 4: aes128-cbc,3des-cbc,aes192-cbc,aes256-cbc
. Parece que mi cliente ssh no admite ninguno de ellos, por lo que el servidor y el cliente no pueden negociar más.
Pero mi cliente admite todos los algoritmos sugeridos:
$ ssh -Q cipher
3des-cbc
aes128-cbc
aes192-cbc
aes256-cbc
[email protected]
aes128-ctr
... and there are several more.
Y si especifico explícitamente el algoritmo de esta manera:
ssh -vvv -c aes256-cbc [email protected]
Puedo iniciar sesión con éxito en el servidor.
Mi ~/.ssh/config
no contiene ninguna directiva relacionada con el cifrado (en realidad la eliminé por completo, pero el problema persiste).
Entonces, ¿por qué el cliente y el servidor no pueden decidir qué cifrado usar sin mis instrucciones explícitas? El cliente entiende que el servidor admite aes256-cbc
, el cliente entiende que puede usarlo él mismo, ¿por qué no solo usarlo?
Algunas notas adicionales:
No hubo tal problema hace algún tiempo (aproximadamente un mes). No he cambiado ningún archivo de configuración ssh desde entonces. Aunque actualicé los paquetes instalados.
Hay una pregunta que describe un problema de aspecto muy similar, pero no hay respuesta a mi pregunta: ssh no puede negociar - no se encontró un método de intercambio de claves coincidente
ACTUALIZACIÓN: problema resuelto
Como explicó telcoM, el problema es con el servidor: sugiere solo los algoritmos de cifrado obsoletos. Estaba seguro de que tanto el cliente como el servidor no están desactualizados. He iniciado sesión en el servidor (por cierto, es Synology, actualizado a la última versión disponible) y examiné el /etc/ssh/sshd_config
. La primera (!) Línea de este archivo fue:
Ciphers aes128-cbc,3des-cbc,aes192-cbc,aes256-cbc
Esto es muy extraño (el hecho de que la línea es la primera en el archivo), estoy seguro de que nunca he tocado el archivo antes. Sin embargo, he cambiado la línea a:
Ciphers aes256-ctr,aes128-cbc,3des-cbc,aes192-cbc,aes256-cbc
reinició el servidor (no descubrí cómo reiniciar sshd
solo el servicio), y ahora el problema desapareció: puedo enviar ssh al servidor como de costumbre.
Respuestas:
Los
-cbc
algoritmos han resultado ser vulnerables a un ataque. Como resultado, las versiones actualizadas de OpenSSH ahora rechazarán esos algoritmos de forma predeterminada: por ahora, todavía están disponibles si los necesita, pero como descubrió, debe habilitarlos explícitamente.Inicialmente, cuando se descubrió la vulnerabilidad (¡a fines de 2008, hace casi 10 años!), Esos algoritmos solo se colocaron al final de la lista de prioridades en aras de la compatibilidad, pero ahora su desaprobación en SSH ha alcanzado una fase en la que esos algoritmos están deshabilitado por defecto. De acuerdo con esta pregunta en Cryptography.SE , este paso de desaprobación ya estaba ocurriendo en el año 2014.
Considere esto como un recordatorio suave para actualizar su servidor SSH , si es posible. (Si se trata de una implementación basada en firmware, vea si hay firmware actualizado disponible para su hardware).
fuente
Puede actualizar su configuración ssh desde el archivo ubicado en: / etc / ssh / ssh_config
sudo nano /etc/ssh/ssh_config
Ciphers aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,3des-cbc
Ctrl + X
. Presione Entrar para guardar y salir.fuente
crear un archivo dentro de ~ / .ssh / config y pegar debajo del contenido
fuente