Où ajouter des clés SSH pour permettre les connexions au serveur distant sur Android?

10

J'utilise un noyau Android personnalisé enraciné (Gingerbread) et je peux me connecter à un serveur SSH distant avec authentification par mot de passe à l'aide de busybox et d'une application d'émulation de terminal. J'aimerais pouvoir utiliser les clés SSH pour la connexion automatique; Est-ce possible? Si oui, où dois-je mettre ma clé privée?

yuttadhammo
la source

Réponses:

10

Ce n'est pas aussi transparent, mais le sshbinaire fourni par busybox (le mien, au moins) prend en charge le -idrapeau, vous pouvez donc mettre la clé où vous le souhaitez et l'utiliser:

ssh -i /path/to/key_file [email protected]

L' entrée de page de manuel pertinente pour -i(avec la mise en garde que les informations sur le chemin par défaut peuvent ne pas être les mêmes sur 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.
eldarerathis
la source
Merci, j'avais pensé à ça, mais je n'ai jamais réussi à l'essayer. Il semble juste étrange qu'il n'y ait aucun endroit où la commande ssh cherchera le répertoire .ssh ... c'est peut-être parce qu'il n'y a pas de $ HOME défini?
yuttadhammo
2
@Yuttadhammo: La chose étrange est que $HOME(pour root) est configuré /datasur mon téléphone, mais sshsemble ignorer tous les répertoires que j'essaie de configurer là-bas. Je n'ai jamais vraiment compris pourquoi, mais je n'ai pas eu non plus vraiment besoin de creuser.
eldarerathis
@Yuttadhammo Dans mon téléphone, echo $HOMEne renvoie rien (même pour root). Si c'est votre cas également, c'est la raison pour laquelle votre client SSH ne peut pas voir les clés par défaut. Mais, avec -iflag, vous pouvez remplacer le chemin par défaut, il n'y a donc aucun intérêt à regarder $ HOME. C'est la bonne solution si votre client SSH réduit le prend en charge. Donc, essayez-le après avoir mis les clés sur la carte SD. S'il échoue, il n'y a pas d'autre moyen, sauf si vous changez de client SSH.
Android Quesito
Génial. A travaillé pour moi.
user20203293928832
6

Installez et exécutez ConnectBot (un client SSH dédié). Appuyez / appuyez sur la touche menu. Dans le menu, appuyez sur Manage Pubkeys. Sur l'écran suivant, appuyez à nouveau sur / touchez la touche de menu. Dans le menu, appuyez sur Import.

Android Quesito
la source
Merci, je viens de le faire - belle application; n'y a-t-il aucun moyen de simplement mettre une clé quelque part et de la faire récupérer par busybox?
yuttadhammo
@Yuttadhammo Je ne pense pas que le conditionnement par défaut de Busybox fournisse un client SSH. Pouvez-vous être plus précis avec votre client SSH (qui peut être un utilitaire externe)?
Android Quesito
N'oubliez pas non plus ... que les applets busybox sont des versions réduites de celles d'origine, votre client SSH en ligne de commande peut ne pas prendre en charge l'authentification avec clé, mais c'est très peu probable. Parlez-moi de votre client SSH.
Android Quesito
Merci, ConnectBot est la solution que j'utiliserai, mais le drapeau -i est vraiment plus proche de répondre à la question.
yuttadhammo