Estoy intentando iniciar sesión en mi enrutador DSL porque tengo problemas con el correo de línea de comandos. Espero poder reconfigurar el enrutador.
Cuando doy el ssh
comando, esto es lo que sucede:
$ ssh [email protected]
Unable to negotiate with 10.255.252.1 port 22: no matching key exchange method found. Their offer: diffie-hellman-group1-sha1
entonces miré esta publicación de stackexchange y modifiqué mi comando para esto, pero tengo un problema diferente, esta vez con los cifrados.
$ ssh -oKexAlgorithms=+diffie-hellman-group1-sha1 [email protected]
Unable to negotiate with 10.255.252.1 port 22: no matching cipher found. Their offer: 3des-cbc
Entonces, ¿hay un comando para ofrecer 3des-cbc
cifrado? No estoy seguro acerca de 3des, como si quiero agregarlo permanentemente a mi sistema.
¿Hay un comando para permitir el 3des-cbc
cifrado?
¿Cuál es el problema aquí? No está pidiendo contraseña.
ssh -o KexAlgorithms=diffe-hellman-group-sha1 [email protected]
para obligar a su cliente a usar un algoritmo más antiguo y menos seguro, y vea si hay un firmware más reciente para su enrutador.ssh -vvv ...
revelará todos los protocolos de intercambio de claves y cifrado ofrecidos por el servidor.Respuestas:
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 unaHost
estrofa. Por ejemplo, si su configuración SSH dice actualmente (ejemplo ficticio):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 ...
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:
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
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.
fuente
Cipher
línea, ¡pero funcionó! ¡Gracias!Ok, leí la página de manual y la descubrí.
No quería modificar mi archivo de configuración, por lo que busqué el término "cifrado" en la página del manual que me mostró la
-c
opción; Esto me permite especificar el tipo de cifrado. el comando final fue entonces:fuente
Recientemente me encontré con este problema usando PuTTY para conectarme a una versión más nueva de Ubuntu. Parece que las versiones anteriores de PuTTY no tenían cifrados actualizados. Así que la descarga de la última versión de PuTTY solucionó el problema. Esa podría ser otra solución.
fuente
Otra respuesta para los comandos MacOSX y CLI (SFTP, por ejemplo): consulte este artículo @ http://www.openssh.com/legacy.html (Opciones de legado de OpenSSL). Recibía un error constante de "no se pudo negociar", que se resolvió con la información de este artículo, específicamente la configuración de un parámetro de configuración en el archivo "~ / .ssh / config".
Por cierto, recibí este error cuando mi servidor SFTP de destino (no bajo mi administración) finalmente apagó TLS 1.0 (opción de cifrado SSL) y requiere TLS 1.1 o 1.2.
fuente