Saltar al contenido

ssh: aceptar claves automáticamente

Solución:

Utilice la opción StrictHostKeyChecking, por ejemplo:

ssh -oStrictHostKeyChecking=no $h uptime

Esta opción también se puede agregar a ~ / .ssh / config, por ejemplo:

Host somehost
    Hostname 10.0.0.1
    StrictHostKeyChecking no

Tenga en cuenta que cuando las claves de host hayan cambiado, recibirá una advertencia, incluso con esta opción:

$ ssh -oStrictHostKeyChecking=no somehost uptime
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
31:6f:2a:d5:76:c3:1e:74:f7:73:2f:96:16:12:e0:d8.
Please contact your system administrator.
Add correct host key in /home/peter/.ssh/known_hosts to get rid of this message.
Offending RSA key in /home/peter/.ssh/known_hosts:24
  remove with: ssh-keygen -f "/home/peter/.ssh/known_hosts" -R 10.0.0.1
Password authentication is disabled to avoid man-in-the-middle attacks.
Keyboard-interactive authentication is disabled to avoid man-in-the-middle attacks.
ash: uptime: not found

Si sus hosts no se reinstalan con frecuencia, puede hacer que esto sea menos seguro (pero más conveniente para las claves de host que cambian con frecuencia) con el -oUserKnownHostsFile=/dev/null opción. Esto descarta todas las claves de host recibidas, por lo que nunca generará la advertencia.


Con 18.04, hay una nueva posibilidad: StrictHostKeyChecking=accept-new. Desde man 5 ssh_config:

If this flag is set to “accept-new” then ssh will automatically
add new host keys to the user known hosts files, but will not
permit connections to hosts with changed host keys.  If this flag
is set to “no” or “off”, ssh will automatically add new host keys
to the user known hosts files and allow connections to hosts with
changed hostkeys to proceed, subject to some restrictions.

Puede usar el siguiente comando para agregar la huella digital de un servidor a sus hosts conocidos

ssh-keyscan -H <ip-address> >> ~/.ssh/known_hosts
ssh-keyscan -H <hostname> >> ~/.ssh/known_hosts

NOTA: Reemplace y con la IP y el nombre dns del servidor que desea agregar.

El único problema con esto es que terminará con algunos servidores en su known_hosts dos veces. Realmente no es un gran problema, solo mencionarlo. Para asegurarse de que no haya duplicados, puede eliminar todos los servidores primero ejecutando lo siguiente primero:

ssh-keygen -R <ip-address>
ssh-keygen -R <hostname>

Entonces podrías ejecutar:

for h in $SERVER_LIST; do
    ip=$(dig +search +short $h)
    ssh-keygen -R $h
    ssh-keygen -R $ip
    ssh-keyscan -H $ip >> ~/.ssh/known_hosts
    ssh-keyscan -H $h >> ~/.ssh/known_hosts
done

Una cosa a tener en cuenta al eliminar solo para volver a agregar, esencialmente está eliminando la seguridad de verificar la huella digital. Por lo tanto, definitivamente no querrá ejecutar este script antes de cada ejecución de su script de utilidad.

Llego un poco tarde con esta respuesta, pero la forma sensata sería hacer un ssh-keyscan en la nueva máquina antes de ejecutar la recopilación de tiempo de actividad.

ssh-keyscan  <newhost> >> ~/.ssh/known_hosts

Desactivar el control de cordura por conveniencia suena como un mal plan, incluso si cree que tiene el control total del medio ambiente.

¡Haz clic para puntuar esta entrada!
(Votos: 2 Promedio: 4.5)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *