4 votos

No se puede añadir un host a "known_hosts" en Android

Me estoy conectando desde mi teléfono Android a mi NAS, utilizando SSH. La clave privada fue generada en mi PC y luego colocada en la carpeta de la tarjeta sd del teléfono. Así que estoy usando la bandera de la identidad para decirle a ssh dónde encontrar el archivo de la clave, por lo que

ssh -i /storage/sdcard/key -p 1000 admin@192.168.10.10

Cada vez que intento conectarme recibo el mensaje de que "no se puede establecer la autenticidad del host". Entonces se me pregunta si quiero seguir conectándome y tengo que decir manualmente "sí" cada vez.

Para algunos el host no puede ser añadido a known_hosts y por eso se me pide cada vez que confirme manualmente. Traté de encontrar ".ssh" en mi dispositivo pero no lo encuentro.

Failed to add the host to the list of known hosts (/data/.ssh/known_hosts)

¿Puede alguien ayudar?

Gracias.

EDIT: He creado manualmente /data/.ssh/known_hosts pero el problema persiste

0 votos

¿Has comprobado los permisos de ambos, el directorio /data/.ssh y el archivo /data/.ssh/known_hosts para asegurar que tu aplicación SSH pueda acceder al directorio y escribir en el archivo?

0 votos

Izzy, muchas gracias. Era un problema de permisos que ahora se ha solucionado ya que lo estoy ejecutando como su.

0 votos

Me alegro de leerlo. Lo he resumido en una respuesta, incluyendo algunos detalles más de lo que tenía en mente. Te invito a "aceptar" la respuesta (haz clic en la marca de verificación junto a ella), ya que evidentemente ha resuelto tu problema :)

2voto

Izzy Puntos 45544

La razón podría ser la insuficiencia de permisos. Una aplicación no puede simplemente elegir crear un directorio por debajo de /data (que no sea el suyo propio, /data/<package_name> que ya ha sido creado por el sistema Android al instalar la aplicación). Así que esta fue la razón por la que falló en primer lugar.

Incluso después de usar sus "poderes de root" para crear el /data/.ssh y poner un directorio (probablemente vacío) known_hosts allí, el problema era probablemente el mismo: ambos eran propiedad del usuario que los creó (Root), y la aplicación podría no haber sido capaz de entrar en el directorio, y mucho menos de escribir en el archivo.

Hay dos posibles soluciones para esto. La primera que usted mismo eligió fue conceder a la aplicación SUPER_USER privilegios. Si esto te parece bien (y confías en la aplicación para ello), tu problema desaparece con eso. Por supuesto, esto requiere que la aplicación solicite el SUPER_USER permiso, lo que obviamente hace en su caso.

Un enfoque más restrictivo habría sido conceder los privilegios correctos al directorio y al archivo, por ejemplo chown al usuario de la aplicación, o chmod apropiadamente. Si es propiedad de esa aplicación, sólo esta aplicación tendría acceso allí, lo que sería la mejor solución. Para ello, primero habría que averiguar el usuario, lo que podría hacerse, por ejemplo, utilizando ls -l /data/<package_name> (sustituir <package_name> con el nombre del paquete de la aplicación), y luego hacer un chown -R <user>:<group> /data/.ssh .

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X