¿Es posible eliminar una clave de host particular del archivo known_hosts de SSH?

245

¿Es posible eliminar una clave de host particular del archivo known_hosts de SSH?

Por lo general, termino borrando todo el archivo known_hosts , que no tengo problemas para hacer, pero solo por curiosidad, ¿es posible eliminar solo una entrada?

Abrí el archivo known_hosts , pero me cuesta entender sus contenidos.

A continuación se muestra el mensaje que enfrenté, que me llevó a hacer esta pregunta:

Add correct host key in /home/wissen16/.ssh/known_hosts to get rid of this message.
Offending key in /home/wissen16/.ssh/known_hosts:1
RSA host key for foo.com has changed and you have requested strict checking.
Host key verification failed.
    
pregunta theTuxRacer 10.01.2011 - 06:56

6 respuestas

419

Utilice este comando para eliminar entradas de known_hosts:

ssh-keygen -R hostname
    
respondido por el Takkat 10.01.2011 - 08:43
28

Sí, puedes eliminar solo una clave. Simplemente ábralo en un editor y elimine la línea ofensiva. El número que aparece después de los dos puntos en el mensaje de error es el número de línea, así que esa es la línea que debe eliminarse: línea 1 en su ejemplo ...

    
respondido por el Mike Scott 10.01.2011 - 07:00
18

Recientemente comencé a usar las claves de host, pero cuando las tengo, generalmente es una clave por línea, así que haga una copia de seguridad del archivo y elimínelas de a una por vez hasta que encuentre la correcta. Luego agrega los otros de vuelta. Un poco largo camino para hacerlo, pero debería funcionar.

Basado también en ese error, y sin tener idea de qué, podría ser la primera clave de host en el archivo que es el problema, abra el archivo con vim

vim ~/.ssh/known_hosts

y pulse

dd

luego guárdalo.

    
respondido por el percent20 10.01.2011 - 07:01
3

El uso de ssh-keygen -R nombre de host no siempre funcionará. Si tiene una versión más reciente de SSH que "oculta" los nombres de host para evitar el secuestro de ssh-agent, aparentemente ssh-keygen no puede deshacer el nombre de host.

Por ejemplo, tengo un host llamado build-node-01 y me he conectado y acepté la clave. Luego lo reconstruyo desde cero, obtengo una nueva huella digital de host y trato de volver a conectarme, recibiré una advertencia de que hay un conflicto en la línea X (digamos 3). Ejecuto ssh-keygen -R hostname , pero la próxima vez que trato de conectar sigo recibiendo una advertencia de que hay un conflicto. Examiné el archivo solo para descubrir que el nombre de host fue hash y apareció como [1] Bu4Ch@R@4D0M57uFF en lugar de un nombre de host legible.

En este caso, la única forma de eliminar con éxito el host infractor era usar

sed -i 'xd' ~/.ssh/known_hosts

Para llevar este sed un paso más allá, puede hacer una copia de seguridad de los known_hosts en caso de que elimine la línea incorrecta, en este caso solo agregue un .bak (o cualquier extensión) a la opción -i para crear un copia de seguridad con esa extensión. Usar ssh-keygen hace esto automáticamente.

sed -i.bak 'xd' ~/.ssh/known_hosts
    
respondido por el dragon788 24.03.2015 - 23:24
1

Solo para compartir otra respuesta limpia y fácil que acabo de encontrar. La eliminación del nombre de host está desactivada, ya que el archivo known_hosts tiene hash. Sin embargo, PODRÍA editar manualmente la entrada del host en función del número de línea en el mensaje de error. Como notó anteriormente Mike Scott, el número de línea del nombre de host ofensivo está en el mensaje de error.

O bien, puedo hacer esto. Desde aquí: cómo reparar la clave ofensiva en el archivo ssh known_hosts

Tengo este poco de magia cli

sed -i 'xd' ~/.ssh/known_hosts

Reemplace la x con el número de línea y listo. También ofrece una respuesta perl si el sed no funciona.

    
respondido por el Corvus B 20.02.2014 - 01:37
0
sed '/10\.20\.120\.211/d' ~/.ssh/known_hosts > temp && mv temp ~/.ssh/known_hosts

En este caso, 10.20.120.211 es el host que quiero eliminar de mi archivo known_hosts, asegúrese de escapar de los caracteres especiales como (.)

    
respondido por el Shan Valleru 20.02.2014 - 02:32

Lea otras preguntas en las etiquetas