Wo kann man SSH-Schlüssel hinzufügen, um Verbindungen zum Remote-Server unter Android zu ermöglichen?

10

Ich verwende einen verwurzelten benutzerdefinierten Android-Kernel (Gingerbread) und kann mithilfe der Busybox und einer Terminalemulator-App eine Verbindung zu einem Remote-SSH-Server mit Kennwortauthentifizierung herstellen. Ich möchte SSH-Schlüssel für die automatische Anmeldung verwenden können. Ist das möglich? Wenn ja, wo soll ich meinen privaten Schlüssel ablegen?

Yuttadhammo
quelle

Antworten:

10

Es ist nicht ganz so nahtlos, aber die sshvon Busybox bereitgestellte Binärdatei (zumindest meine) unterstützt das -iFlag, sodass Sie den Schlüssel beliebig platzieren und verwenden können:

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

Der relevante Manpage- Eintrag für -i(mit der Einschränkung, dass die Informationen zum Standardpfad unter Android möglicherweise nicht identisch sind):

-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
quelle
Danke, ich hatte daran gedacht, bin aber nie dazu gekommen, es zu versuchen. Es scheint nur seltsam, dass es keinen Ort gibt, an dem der Befehl ssh nach dem Verzeichnis .ssh sucht ... Vielleicht liegt es daran, dass kein $ HOME festgelegt ist?
Yuttadhammo
2
@Yuttadhammo: Das Seltsame ist, dass $HOME(für root) /dataauf meinem Telefon eingestellt ist, aber sshalle Verzeichnisse zu ignorieren scheint, die ich dort einzurichten versuche. Ich habe nie wirklich herausgefunden, warum das so ist, aber ich hatte auch nicht das Bedürfnis, mich wirklich damit zu beschäftigen.
Eldarerathis
@ Yuttadhammo Gibt in meinem Telefon echo $HOMEnichts zurück (auch nicht für root). Wenn dies auch Ihr Fall ist, ist dies der Grund, warum Ihr SSH-Client standardmäßig keine Schlüssel sehen kann. Mit -iflag können Sie jedoch den Standardpfad überschreiben, sodass es keinen Sinn macht, nach $ HOME zu suchen. Dies ist die richtige Lösung, wenn Ihr reduzierter SSH-Client dies unterstützt. Probieren Sie es aus, nachdem Sie die Schlüssel auf die SD-Karte gelegt haben. Wenn dies fehlschlägt, gibt es keine andere Möglichkeit, als den SSH-Client zu ändern.
Android Quesito
Groß. Hat für mich gearbeitet.
user20203293928832
6

Installieren und führen Sie ConnectBot (einen dedizierten SSH-Client) aus. Tippen / drücken Sie die Menütaste. Tippen Sie im Menü auf Manage Pubkeys. Drücken Sie im nächsten Bildschirm erneut die Menütaste. Tippen Sie im Menü auf Import.

Android Quesito
quelle
Danke, das habe ich gerade gemacht - schöne App; Gibt es keine Möglichkeit, einfach irgendwo einen Schlüssel abzulegen und von der Busybox abholen zu lassen?
Yuttadhammo
@ Yuttadhammo Ich glaube nicht, dass die Standardverpackung von Busybox einen SSH-Client bietet. Können Sie Ihren SSH-Client (der möglicherweise ein externes Dienstprogramm ist) genauer beschreiben?
Android Quesito
Denken Sie auch daran, dass Ihr Befehlszeilen-SSH-Client die Authentifizierung mit Schlüssel möglicherweise nicht unterstützt, da die Busybox-Applets auf die ursprüngliche Version reduziert wurden. Dies ist jedoch sehr unwahrscheinlich. Erzählen Sie mir einfach von Ihrem SSH-Client.
Android Quesito
Vielen Dank, ConnectBot ist die Lösung, die ich verwenden werde, aber das Flag -i ist der Beantwortung der Frage wirklich näher.
Yuttadhammo