Estoy tratando de ssh a la máquina remota, el intento falla:
$ ssh -vvv admin@192.168.100.14
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: umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1
debug2: MACs stoc: umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1
debug2: compression ctos: none,zlib@openssh.com
debug2: compression stoc: none,zlib@openssh.com
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
rijndael-cbc@lysator.liu.se
aes128-ctr
... and there are several more.
Y si especifico explícitamente el algoritmo de esta manera:
ssh -vvv -c aes256-cbc admin@192.168.100.14
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.