¿Cómo omito la pregunta de "conocido_host" la primera vez que me conecto a una máquina a través de SSH con claves públicas / privadas? [duplicar]

Respuestas:

31

Todas las otras respuestas actuales no tienen UserKnownHostsFile = / dev / null

Si solo quieres hacerlo una vez, puedes usar:

ssh -o StrictHostKeychecking=no hostname

Si desea hacerlo repetidamente, debe agregar algo como lo siguiente a su ~ / .ssh / config

Host 192.168.0.*
    StrictHostKeyChecking no
    UserKnownHostsFile=/dev/null

Para configurar esto en OpenSSH para Windows, simplemente reemplace /dev/nullcon NUL.

Buena explicación de: http://linuxcommando.blogspot.com/2008/10/how-to-disable-ssh-host-key-checking.html

Jason Axelson
fuente
2
He estado buscando lejos para filtrar una subred durante meses (no activamente), esto es exactamente lo que he estado esperando. Tenemos una pequeña red de desarrollo con dhcp y nuestros dispositivos siempre obtienen una nueva dirección IP, lo que hace que la conexión a ellos sea MUCHO más fácil. ¡Gracias!
Adam Lewis
13

Desactivar StrictHostKeyCheckingmediante ssh_configo las opciones de línea de comando.

caos
fuente
/ etc / ssh / ssh_config o ~ / .ssh / config --- o lo que sea equivalente en Windows si esa es su plataforma de cliente
Doug Harris
3

Puede obtener la clave pública, agregarla al archivo known_hosts y luego volver a mostrarla:

ssh-keyscan -t rsa hostname >> .ssh/known_hosts
ssh-keygen -H
rm .ssh/known_hosts.old
egridasov
fuente
2
$ ssh -o StrictHostKeychecking=no hostname

Esto hará que se omita la verificación y que la clave del host remoto se agregue automáticamente en el primer inicio de sesión. (También existe la opción CheckHostIP, pero no parece deshabilitar la verificación de si existe una clave).

Nelson
fuente
2
También me gusta usar UserKnownHostsFile para que la firma no se recuerde en mi sistema. Un buen truco:ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeychecking=no hostname
metavida
2

Esto me llevó un tiempo encontrar. El caso de uso más común que he visto es cuando tienes túneles ssh a redes remotas. Todas las soluciones aquí produjeron advertencias que rompieron mis scripts (nagios).

La opción que necesitaba era:

NoHostAuthenticationForLocalhost yes

Lo cual, como su nombre indica, solo se aplica a localhost.

richo
fuente
0

Puede deshabilitar la comprobación, pero por supuesto eso es menos seguro. En una situación ideal, lo que debe hacer es conseguir que alguien que ya tiene acceso a la máquina tome su clave de host pública y le diga a ssh que la use. es decir: tome la salida de:

cat /etc/ssh/ssh_host_rsa_key.pub

anteponga el nombre de host de la máquina y agregue esa línea al archivo ~ / .ssh / known_hosts en su máquina. Terminarás con algo que se parece a:

myhost.example.com ssh-rsa AAAAB3Netc ...

Alternativamente, si solo desea tomar la huella digital de la clave, que puede ser más fácil de transferir a través de un canal de ancho de banda limitado (como una llamada telefónica), puede hacer que su ayudante se ejecute:

ssh-keygen -lf /etc/ssh/ssh_host_rsa_key.pub

fuente
0

Si solo desea deshabilitar temporalmente la comprobación de host, para que pueda iniciar sesión en un sistema LiveCD, por ejemplo, cambie el nombre ~/.ssh/known_hostsa otra cosa y luego vuelva a cambiarla cuando haya terminado.

endolito
fuente
-2
  1. Agregue "StrictHostKeyChecking no" a / etc / ssh / ssh_config
  2. cd ~ / .ssh
  3. rm known_hosts
  4. ln -s / dev / null known_hosts

Bingo

Acantilado kennedy
fuente
1
Sabes qué tipo de ataque se supone que esta pregunta debe evitar, ¿verdad?
vonbrand