El error `no pudo cargar la clave de host` al intentar recrear las claves de host SSH

13

Estoy tratando de recrear las claves de host del servidor ssh.

Tengo al menos dos formas de hacer esto:

  • Con dpkg-reconfigure

    dpkg-reconfigure openssh-server
    

    Esto funciona bien, pero no puedo dar la longitud de la clave entonces. Quiero, por ejemplo, 4096 para la clave RSA.

  • Manualmente con ssh-keygen

    sudo ssh-keygen -f /etc/ssh/ssh_host_rsa_key -N 'myverylongpasswordhere' -b 4096 -t rsa
    

    Esto me recrea las claves, pero después de reiniciar el servidor, recibo el siguiente mensaje de error :

    could not load host key: /etc/ssh/ssh_host_rsa_key
    

    así que revisé el archivo sshd_config que hay allí:

    HostKey /etc/ssh/ssh_host_rsa_key
    

    combina perfectamente Entonces, verifiqué el propietario y los derechos de todas mis llaves

    -rw------- 1 root root 3326 Mär 24 08:57 ssh_host_rsa_key
    

    Cuando elimino todas las claves y las vuelvo a crear dpkg-reconfigure openssh-server, las claves son más pequeñas y tienen los mismos derechos de archivo que las anteriores.

Pregunta: ¿Cómo puedo usar dpkg-reconfigurecon keylengh 4096 para RSA?

Emil Sommer
fuente
Ejecute sshden modo de depuración desde la línea de comandos ( sudo sshd -d) para obtener más información sobre el problema y publicar el resultado.
David Foerster
@DavidFoerster Eso parece una buena sugerencia. Intenté recrear el problema moviendo mis claves temporalmente, creando nuevas claves con contraseñas, deteniéndome y reiniciando ... No recibo el mensaje de error del OP. Este es el resultado que obtengo livewire@za20:/etc/ssh$ sudo sshd -d. sshd re-exec requires execution with an absolute pathDe lo contrario, habría incluido un ejemplo en mi respuesta :(
LiveWireBT
Lo siento, eso debería haber sido sudo /usr/sbin/sshd -d. El error que obtuvo se entiende literalmente (aunque no del todo claro).
David Foerster
Aunque la respuesta aceptada resuelve el problema, todavía me pregunto acerca de la pregunta final en la primera publicación: ¿Cómo puedo usar dpkg-reconfigurecon keylength 4096? ¿Hay algún archivo de configuración en algún lugar que contenga esta información? Miré a mi alrededor en las bases de datos de debconf (en /var/cache/debconf/) pero no encontré nada que se pareciera a la longitud de la clave.
ph0t0nix

Respuestas:

8
sudo ssh-keygen -f /etc/ssh/ssh_host_rsa_key -N 'myverylongpasswordhere' -b 4096 -t rsa

me recrea las llaves. pero, después de reiniciar el servidor, recibo

could not load host key: /etc/ssh/ssh_host_rsa_key

Crea una clave de host con una contraseña. ¿Hay alguna personalización para desbloquear esa clave de host? De lo contrario, creo que eso es lo que se espera: el script que administra el servicio se inicia, intenta cargar la clave de host y falla. Hasta donde yo sé, no deberías crear llaves de host protegidas con contraseñas.

Si está interesado en fortalecer su servidor SSH, le recomiendo leer https://stribika.github.io/2015/01/04/secure-secure-shell.html. El comando utilizado para crear la clave de host en ese documento es:

ssh-keygen -t rsa -b 4096 -f ssh_host_rsa_key

Pero debe leer todo el documento antes de realizar cambios.

LiveWireBT
fuente
trabajos. simplemente quitando la contraseña de myverylong aquí. por cierto: muy buen artículo para leer. de hecho, openssh proviene de ubuntu-repro en mi caso, y no era compatible con KexAlgorithms curve25519-sha256 @ libssh.org, diffie-hellman-group-exchange-sha256
Emil Sommer el
20

Ninguna de las respuestas anteriores funcionó para mí. Arreglé mi sistema ubuntu haciendo lo siguiente:

/usr/bin/ssh-keygen -A
MichaelICE
fuente
1
ESTA. Esta es la respuesta real, como lo confirma la página de manual de ssh-keygen sobre ese indicador "-A": para cada uno de los tipos de clave (rsa1, rsa, dsa, ecdsa y ed25519) para las que no existen claves de host, genere claves de host con la ruta de archivo de clave predeterminada, una frase de contraseña vacía, bits predeterminados para el tipo de clave y comentario predeterminado. Los scripts de administración del sistema lo utilizan para generar nuevas claves de host.
BoomShadow
1

Simplemente ejecute:

ssh-keygen -t rsa -b 4096

ssh-keygen genera una clave SSH.

  • -t especifica el tipo de clave para crear
  • -b especifica el número de bits en la clave.

Vea esta página para más información.

amrx
fuente
Esta no es la respuesta. por favor vea mi pregunta, ya hice esto, con el resultado de que no se pudo cargar hostkey.
Emil Sommer
3
@EmilSommer No, esa es exactamente la respuesta, solo falta una explicación (por qué aparece el mensaje de error y qué significa).
LiveWireBT