¿Cómo agregar automáticamente un servidor aknown_hosts? (y no use la huella digital md5, ya que me refiero a una forma segura, no envíe soluciones "auto sí/aceptar". Quiero llevar las credenciales requeridas del servidor a la máquina)
Me gustaría actualizar automáticamente mi known_hosts
archivo ssh para aceptar un nuevo servidor.
Supongo que necesito agregar la clave pública del servidor ( id_rsa.pub
obtenida a través de un canal seguro), pero lo que veo es que el formato es diferente (he intentado agregar así awk '{print "server "$1" "$2}' id_rsa.pub > .ssh/known_hosts
pero la verificación falló. Tenga en cuenta que no quiero usar md5 huella digital por fallas en md5). Si algo más id_rsa.pub
fuera útil, puedo ejecutar comandos en el servidor y obtener resultados a través de un canal confiable. (Tenga en cuenta que no es un canal de red (piense en llevar físicamente el pendrive de un lugar a otro), por lo que ssh-keyscan
no resuelve el problema. Además, id_rsa.pub es la clave del servidor dropbear que no se ejecuta en el servidor, por lo que solo archivos con claves. están disponibles, no el servidor)
Respuesta1
El nombre id_rsa.pub
parece la clave pública de un usuario. Esto no tiene nada que ver con known_hosts
almacenar known_hosts
claves de host. Las claves de host, como su nombre lo indica, autentican un host (es decir, una computadora), mientras que las claves de usuario autentican a un usuario. Las claves públicas del host de OpenSSH normalmente se encuentran en /etc
o /etc/ssh
y se denominan algo así como ssh_host_rsa_key.pub
.
Dropbear tiene un único archivo que contiene la clave privada. Para extraer la clave pública (en un formato que sea compatible entre Dropbear y OpenSSH), ejecute
dropbearkey -f /etc/dropbear/dropbear_rsa_host_key -y | sed -n 2p >host_key.pub
No creo que OpenSSH venga con un comando para actualizar el known_hosts
archivo. Es bastante fácil hacerlo manualmente:
echo "$server_name,$server_ip_address $(cat server_ssh_host_rsa_key.pub)" >>~/.ssh/known_hosts
Si desea codificar los nombres de host (para que alguien que lea su known_hosts
archivo no pueda conocer los nombres de estos servidores; es una ganancia de privacidad muy pequeña), ejecútelo ssh-keygen -H
después.