Las claves SSH DSA ya no funcionan para la autenticación sin contraseña

25

Después de actualizar a Fedora 23, la autenticación sin contraseña (basada en clave pública) ya no funciona en SSH: al intentar SSH a algún host, solicita mi contraseña en el host remoto. No consigo que use mi clave privada SSH. Todo funcionó bien con Fedora 22.

Mi clave pública es una clave DSA ( ~/.ssh/id_dsa.pub). Estoy usando OpenSSH 7.1 ( openssh-7.1p1-5.fc23.x86_64).

¿Cómo consigo que la autenticación sin contraseña vuelva a funcionar correctamente?

DW
fuente
1
Gracias, @ dave_thompson_085. Esto no es un engaño de superuser.com/q/962918/93541 . Esa pregunta es cómo usar ssh -Q. Esto está preguntando cómo solucionar un fallo de SSH. Encontré parte del material en superuser.com/q/962918/93541 y en otros lugares útiles para identificar esta solución, pero la respuesta allí describe cómo usar ssh -Qy no responde a esta pregunta (por ejemplo, no explica cómo solucionarlo). este problema), así que en mi opinión no es un dup. El de Unix y Linux es muy similar; Desearía haberlo visto antes. ¡Gracias otra vez por los enlaces!
DW
Ack, tienes razón. Los había marcado como "OpenSSH 7.0 sin DSA", que en el primer caso no está lo suficientemente cerca. Lo siento.
dave_thompson_085

Respuestas:

40

Este es el resultado de la actualización a OpenSSH 7.0. Como dicen las notas de la versión de OpenSSH 7.0 , "La compatibilidad con el host ssh-dss y las claves de usuario está deshabilitada de forma predeterminada en tiempo de ejecución".

La solución es agregar la siguiente línea ~/.ssh/configen cada máquina cliente (cada máquina donde ejecuta el cliente SSH):

PubkeyAcceptedKeyTypes=+ssh-dss

Si el servidor usa OpenSSH 7.0 o posterior, también deberá agregar esta línea /etc/ssh/sshd_configen cada máquina del servidor.

Alternativamente, puede generar una clave SSH completamente nueva y agregarla a su archivo Author_keys en cada servidor en el que quiera iniciar sesión. Le recomiendo que use RSA , para evitar problemas de compatibilidad. No recomiendo ECDSA, ya que aparentemente gnome-keyring-daemon no recoge automáticamente las claves SSH del tipo ECDSA.


Comentario editorial: ¿Por qué la gente de OpenSSH deshabilitó las claves DSA? No lo sé. Hasta donde puedo determinar, no hay nada de malo en la seguridad de las claves DSA (ssh-dss). La página web de OpenSSH afirma que ssh-dss es débil, pero que yo sepa, ssh-dss de 1024 bits no es más débil que RSA de 1024 bits, y las claves RSA de 1024 bits no están deshabilitadas.

DW
fuente
1
La selección del tipo de clave se analiza en Seguridad durante algún tiempo. La seguridad de las claves DSA es cuestionable desde el principio y menos segura si no tiene un buen generador aleatorio (que no puede asegurarse). Y dado que ahora hay otros tipos de claves posibles para usar, no hay razón para retener los cuestionables.
Jakuje el
2
@Jakuje, sí, la selección del tipo de clave se trata en Seguridad de la información aquí y aquí . Leí todo eso antes de escribir mi comentario editorial, y sigo desconcertado por qué las claves DSA estaban desactivadas: no son más débiles que las claves RSA de la misma longitud, que no estaban desactivadas. No hay nada en ninguno de esos hilos que indique que DSA es "cuestionable", y como dice Thomas Pornin, "no hay ninguna razón relacionada con la seguridad para preferir un tipo sobre otro, suponiendo claves suficientemente grandes". (cont.)
DW
Vea aquí para una discusión más detallada.
DW
0

Mis dos centavos

Como editar .ssh/configarchivos para permitir que esto parezca no ser una buena idea, sugiero

  1. Cree una nueva clave, utilizando la herramienta reciente.

    Luego copie la nueva clave pública (en el clipbord)

  2. Inicie sesión por última vez utilizando la clave anterior:

    ssh -i .ssh/id_dsa.pub -o PubkeyAcceptedKeyTypes=+ssh-dss user@host
    

    Luego actualice @hostel authorized_keysarchivo, agregando su nueva clave pública y cierre la sesión

    cat >>.ssh/authorized_keys
    

    paste, entonces Ctrl+D

  3. Inicie sesión con una nueva clave utilizando la sintaxis predeterminada:

    ssh user@host
    
    1. Luego actualice @hostel authorized_keysarchivo, eliminando su antigua clave pública (la uso sed -e 1d -i .ssh/authorized_keyscuando mi antigua clave pública está en línea con 1este archivo).

    2. Sugiero actualizar su servidor ssh si puede.

    3. cerrar sesión
  4. Prueba si la vieja clave ya no funciona.

    ssh -i .ssh/id_dsa.pub -o PubkeyAcceptedKeyTypes=+ssh-dss user@host
    ...
    Permission denied...
    

    Esto no tiene que funcionar ;-)

  5. Incluso podría volver a verificar si todo está bien:

    ssh user@host uptime
    
F. Hauri
fuente
No es obvio para mí por qué piensas que editar ~/.ssh/configno es una buena idea.
DW
Porque esto está en desuso y el autor ssh recomienda no usarlo. Ver openssh.com/legacy.html
F. Hauri
Oh, entiendo Parece que su preocupación no es con la idea de editar ~/.ssh/configper se sino con la idea de permitir DSA. Gracias por la explicación. Eso tiene sentido. (Creo que ya he abordado en mi respuesta y en mis comentarios por qué considero que esa recomendación es desconcertante, pero no intentaré debatir eso aquí.)
DW
La edición .configle permite ejecutar sshdurante un tiempo prolongado e incluso puede confundirse si utiliza un algoritmo débil . Al usar -o Pubkey...en la línea de comando, no perdonarás que haya algo para actualizar .
F. Hauri