Cuando intento ingresar using ssh user@server.com
a mi servidor en casa desde la red local o desde el exterior, recibo el siguiente error:
Pero si uso sudo ssh user@server.com
, funciona sin problemas:
Estoy seguro de que solo necesito colocar algún tipo de clave en ese /Users/mattlove/.ssh/known_hosts
directorio, pero no estoy seguro de cómo o por qué.
¿Alguno de ustedes, aficionados a UNIX, tiene una respuesta?
EDITAR :
Aquí están los resultados de correr ls -l ~/.ssh/known_hosts
según lo solicitado por @LoïcWolff
La primera vez que se conecta a un servidor, se le solicita que acepte la huella digital del host al que se está conectando. La huella digital es una combinación de una firma digital, el nombre de host y la dirección IP del servidor. Cuando acepta, la huella digital se guarda ~/.ssh/known_hosts
como un host "de confianza".
Por alguna razón, la huella digital del servidor ha cambiado desde la primera vez que se conectó a él. Esto puede deberse a que no es el servidor que espera que sea, por ejemplo, cuando su solicitud está siendo interceptada y redirigida a un servidor diferente. De ahí la advertencia de seguridad. La explicación también podría ser menos maliciosa, por ejemplo, cuando el servidor se reemplazó/reinstaló sin restaurar su firma digital anterior, o cuando la dirección IP cambió.
Si a pesar de la advertencia de seguridad, aún confía en el servidor al que se está conectando, debe abrir ~/.ssh/known_hosts
y buscar la línea que comienza con la dirección del servidor al que se está conectando. Elimine toda la línea y guarde sus cambios, luego vuelva a conectarse al servidor. La primera vez que se conecte, debería solicitarle nuevamente que acepte la huella digital actualizada, después de lo cual no debería tener más problemas para conectarse a ese host.
La razón por la que funcionaría sudo
es porque en esas condiciones lo está ejecutando como un usuario diferente (raíz), y cada usuario tiene su propio archivoknown_hosts (para raíz, se encuentra en /private/var/root/.ssh/known_hosts
). Es posible que root nunca haya registrado la huella digital anterior de ese host y, por lo tanto, no tiene forma de compararla con la actual y no hay motivos para desconfiar del servidor.
El known_hosts
archivo contiene las claves de los hosts a los que se ha conectado anteriormente y ha verificado que ha comprobado que la firma de la clave es correcta.
En tu caso, ha sucedido una de dos cosas,
root
cuenta.root
cuenta y tiene la clave correcta en su cuenta.Lo más probable es que sea el caso 1: los ataques man-in-the-middle en SSH, si bien son posibles, son relativamente raros. La advertencia está ahí para alertarlo sobre el hecho de que alguien puede estar interceptando sus comunicaciones, aunque las posibilidades de que esto suceda son bastante bajas.
Para resolver esto, abra el known_hosts
archivo y elimine la entrada del host en cuestión. Póngase en contacto con el administrador del sistema del host y pídale la 'huella digital de la clave del host'. Realice su conexión nuevamente, verifique que la huella digital coincida con la que obtuvo del Administrador del sistema y apruebe la clave.
Si la huella digital no coincide con la proporcionada por el administrador del sistema del host remoto, ¡NO apruebe la clave!
Robin
amor mate
Robin