¿Dónde agregar claves SSH para permitir conexiones al servidor remoto en Android?
10
Estoy usando un kernel Android rooteado (Gingerbread), y puedo conectarme a un servidor SSH remoto con autenticación de contraseña usando busybox y una aplicación de emulador de terminal. Me gustaría poder usar las claves SSH para el inicio de sesión automático; ¿es posible? Si es así, ¿dónde debo poner mi clave privada?
No es tan transparente, pero el sshbinario proporcionado por busybox (el mío, al menos) admite la -ibandera, por lo que puede colocar la clave donde quiera y usar eso:
La entrada de página de manual relevante para -i(con la advertencia de que la información sobre la ruta predeterminada puede no ser la misma en Android):
-i identity_file
Selects a file from which the identity (private key) for public
key authentication is read. The default is ~/.ssh/identity for
protocol version 1, and ~/.ssh/id_dsa, ~/.ssh/id_ecdsa and
~/.ssh/id_rsa for protocol version 2. Identity files may also be
specified on a per-host basis in the configuration file. It is
possible to have multiple -i options (and multiple identities
specified in configuration files). ssh will also try to load
certificate information from the filename obtained by appending
-cert.pub to identity filenames.
Gracias, había pensado en eso, pero nunca pude probarlo. Simplemente parece extraño que no haya lugar donde el comando ssh buscará el directorio .ssh ... ¿tal vez es porque no hay un conjunto $ HOME?
yuttadhammo
2
@Yuttadhammo: Lo extraño es que $HOME(para root) está configurado /dataen mi teléfono, pero sshparece ignorar cualquier directorio que intente configurar allí. Realmente nunca he descubierto por qué, pero tampoco he tenido la necesidad de investigarlo.
eldarerathis
@Yuttadhammo En mi teléfono, echo $HOMEno devuelve nada (incluso para root). Si ese es su caso también, es la razón por la cual su cliente SSH no puede ver las claves por defecto. Pero, con la -ibandera, puede anular la ruta predeterminada, por lo que no tiene sentido mirar $ HOME. Esta es la solución correcta si su cliente SSH recortado lo admite. Entonces, pruébalo después de poner las llaves en la tarjeta SD. Si falla, no hay otra forma a menos que cambie el cliente SSH.
Android Quesito
Excelente. Trabajó para mi.
user20203293928832
6
Instale y ejecute ConnectBot (un cliente SSH dedicado). Toque / presione la tecla de menú. Desde el menú, toque Manage Pubkeys. En la siguiente pantalla, nuevamente presione / toque la tecla de menú. Desde el menú, toque Import.
Gracias. De hecho, acabo de hacer eso: buena aplicación; ¿no hay forma de simplemente poner una llave en algún lugar y que busybox la recoja?
yuttadhammo
@Yuttadhammo No creo que el empaquetado predeterminado de Busybox proporcione el cliente SSH. ¿Puede ser más específico con su cliente SSH (que puede ser una utilidad externa)?
Android Quesito
Además, recuerde ... como los applets busybox son versiones recortadas de las originales, su cliente SSH de línea de comando puede no admitir la autenticación con clave, pero es muy poco probable. Solo cuéntame sobre tu cliente SSH.
Android Quesito
Gracias, ConnectBot es la solución que usaré, pero el indicador -i está realmente más cerca de responder la pregunta.
$HOME
(para root) está configurado/data
en mi teléfono, perossh
parece ignorar cualquier directorio que intente configurar allí. Realmente nunca he descubierto por qué, pero tampoco he tenido la necesidad de investigarlo.echo $HOME
no devuelve nada (incluso para root). Si ese es su caso también, es la razón por la cual su cliente SSH no puede ver las claves por defecto. Pero, con la-i
bandera, puede anular la ruta predeterminada, por lo que no tiene sentido mirar $ HOME. Esta es la solución correcta si su cliente SSH recortado lo admite. Entonces, pruébalo después de poner las llaves en la tarjeta SD. Si falla, no hay otra forma a menos que cambie el cliente SSH.Instale y ejecute ConnectBot (un cliente SSH dedicado). Toque / presione la tecla de menú. Desde el menú, toque
Manage Pubkeys
. En la siguiente pantalla, nuevamente presione / toque la tecla de menú. Desde el menú, toqueImport
.fuente