Este error particular ocurre mientras se configura el canal encriptado. Si su sistema y el sistema remoto no comparten al menos un cifrado, no hay un cifrado para acordar y no es posible un canal cifrado. Por lo general, los servidores SSH ofrecerán un pequeño puñado de cifrados diferentes para atender a diferentes clientes; No estoy seguro de por qué su servidor estaría configurado para permitir solo 3DES-CBC.
Ahora, 3DES-CBC no es terrible. Es lento y proporciona menos seguridad que algunos otros algoritmos, pero no se puede romper inmediatamente siempre que las claves se seleccionen correctamente. El CBC en sí tiene algunos problemas cuando el texto cifrado puede modificarse en tránsito, pero sospecho firmemente que la corrupción resultante sería rechazada por el HMAC de SSH, reduciendo el impacto. En pocas palabras, hay peores opciones que 3DES-CBC, y hay mejores opciones. Sin embargo, siempre tenga cuidado al anular los valores predeterminados relacionados con la seguridad, incluidas las opciones de algoritmo de cifrado e intercambio de claves.Esos valores predeterminados son los valores predeterminados por una razón; algunas personas bastante inteligentes gastaron algo de poder mental considerando las opciones y determinaron que lo que se eligió como predeterminado proporciona la mejor compensación general de seguridad versus rendimiento.
Como descubrió, puede usar -c ...
(o -oCiphers=...
) para especificar qué cifrado ofrecer desde el lado del cliente. En este caso, agregar -c 3des-cbc
solo permite 3DES-CBC del cliente. Como esto coincide con un cifrado que ofrece el servidor, se puede establecer un canal cifrado y la conexión pasa a la fase de autenticación.
También puede agregar esto a su personal ~/.ssh/config
. Para evitar hacer un cambio global para resolver un problema local, puede ponerlo en una Host
estrofa. Por ejemplo, si su configuración SSH dice actualmente (ejemplo ficticio):
Port 9922
especificando un puerto predeterminado global de 9922 en lugar del predeterminado 22, puede agregar una sección de host para el host que necesita una configuración especial y una sección de host global para el caso predeterminado. Eso se convertiría en algo así como ...
Host 10.255.252.1
Ciphers 3des-cbc
KexAlgorithms +diffie-hellman-group1-sha1
Host *
Port 9922
La sangría es opcional, pero creo que mejora enormemente la legibilidad. Las líneas en blanco y las líneas que comienzan con #
se ignoran.
Si siempre (o principalmente) inicia sesión como el mismo usuario en ese sistema, también puede especificar ese nombre de usuario:
Host 10.255.252.1
Ciphers 3des-cbc
KexAlgorithms +diffie-hellman-group1-sha1
User enduser
Host *
Port 9922
Para Host *
empezar, no necesita agregar una estrofa si no había nada en su ~ / .ssh / config, ya que en ese caso solo se incluirían los valores predeterminados compilados o en todo el sistema (generalmente de / etc / ssh / ssh_config) usado.
En este punto, la línea de comando ssh para conectarse a este host se reduce a simplemente
$ ssh 10.255.252.1
y los demás usuarios de su sistema, y las conexiones a todos los demás hosts de su sistema, no se ven afectados por los cambios.