Construí varias máquinas virtuales durante las últimas semanas. El problema es que .ssh/known_hosts
me da la advertencia del hombre en el medio . Esto sucede porque otra huella digital está asociada con la IP de la máquina virtual.
En el .ssh/known_hosts
archivo, sin embargo, no encuentro el registro relacionado con la IP, solo dos cadenas extrañas similares a teclas y "ssh-rsa".
¿Alguien tiene alguna idea sobre cómo quitar la clave anterior known_hosts
?
ssh
hosts
openssh
man-in-the-middle
Adam Matan
fuente
fuente
HashKnownHosts yes
configurado.Respuestas:
Modificará el archivo ~ / .ssh / known_hosts: 6, eliminando la sexta línea.
En mi opinión, el uso
ssh-keygen -R
es una mejor solución para un usuario avanzado de openssh, mientras que su administrador habitual de Linux haría mejor para mantener sus habilidades de sed frescas utilizando el método anterior.fuente
/etc/sudoers
sin élvisudo
. Si quieres agudizar tussed
habilidades, adelante y hazlo sin estropear tu sistema.ssh-keygen -R
ysed -i {line}d
son bastante "oficiales", y ambos funcionarán en el futuro previsible. Util ssh-keygen permite la eliminación por número de línea, ambos son perfectamente aceptables (porque los números de línea son a menudo más fáciles de manejar y menos propensos a errores que los nombres de host de centros de datos modernos).man ssh-keygen
mencionassh-keygen -R hostname
que acaba de decirssh-keygen -R
sin nombre de host especificado, y no ha explicado lo que quiere decir con eso.La solución más simple es:
¡ssh volverá a crear el archivo, pero pierde la comprobación de claves para otros hosts!
O puedes usar:
O el mensaje ssh "man-in-the-middle" debería indicar qué línea del archivo known_hosts tiene la huella digital ofensiva. Edite el archivo, salte a esa línea y elimínelo.
fuente
ssh-keygen -R hostname
funcionará tambiénssh-keygen
opción se agregó debido a un comentario, pero sin explicación. No creo que esta respuesta merezca tantos votos positivos.Hay un interruptor ssh-keygen (
-R
) para esto.man ssh-keygen
lee:fuente
[localhost]:port
, usando los corchetes porque usé un puerto personalizado, supongo = /. Como otros han dicho, también usaría el enfoque de comprobación de claves sin SSH para el desarrollo de mi sistema transitorio / de prueba.ssh-keyscan -H my.ssh.server.example.com >> ~/.ssh/known_hosts;
La advertencia le indicará la línea exacta en el archivo de hosts conocidos.
Aquí hay un ejemplo:
¿Ves la
/home/user/.ssh/known_hosts:6
parte? Especifica el archivo y el número de línea.fuente
Debe ejecutar el siguiente comando para deshacerse de este problema. Abra la terminal y escriba el siguiente comando:
Para todos los ejemplos a continuación, simplemente reemplace el valor después de -R
fuente
ssh-keygen -R
cualquiera de las otras respuestas hasta ahora. Muestra con el ejemplo exactamente lo que puedes escribir después-R
. Por lo tanto, esta respuesta vale la pena, a pesar de que no es una respuesta totalmente nueva.También puede indicar a ssh que no compruebe el archivo known_hosts utilizando los indicadores UserKnownHostsFile y StrictHostKeyChecking.
Por ejemplo:
Para facilitar su uso, puede usar este alias:
Ahora puede boldssh siempre que esté seguro de confiar en el certificado del servidor.
fuente
~/.ssh/known_hosts
actualización? ¿Por qué no simplemente seguir adelante y usartelnet
? "cuando esté seguro": si alguna vez está seguro, entonces no tiene idea de qué es un ataque MITM y probablemente debería pasar algún tiempo leyendo buena literatura.Todas las respuestas son buenas, pero para SSH pro real nos falta información sobre cómo eliminar la firma ssh con el número de puerto.
Comando simple de eliminación de firma de host SSH:
Eliminación de clave ssh compleja, por ejemplo, se conecta a ssh en el puerto no estándar 222:
y recibe una advertencia, y para eliminar esto, debe usar el número de puerto de dos puntos entre corchetes:
Espero que esto ayude a los usuarios de configuración no estándar.
fuente
Aquí hay un método que usa el editor Ex:
donde sexto es su número de línea mencionado en el mensaje de advertencia. Como este:
En general, se recomienda utilizar
ex
para editar los archivos de manera no interactiva , en lugar desed
, que es más un S tream ED itor y su-i
parámetro que es una extensión de FreeBSD no estándar.fuente
La entrada para el nombre de host o ip debe estar en la primera columna. La advertencia también debe incluir un número de línea donde se encuentra la clave infractora.
fuente
También puede eliminar una sola línea de hosts conocidos con, por ejemplo, rmknownhost 111 (111 es la línea a eliminar):
Guarde esto como
rmknownhost
en una carpeta de suPATH
.fuente
sshdel() { sed -i "${@}d" ~/.ssh/known_hosts; }
y llámelo consshdel [line number]
. sin rubí, sin binario, sin preocupaciones.Es un archivo de texto. Puede editar fácilmente con vi (m) y simplemente eliminar la línea en cuestión (dd) y guardar el archivo (wq). Pero si hay un comando específico para eliminar un host, ese es probablemente el método más seguro.
fuente