Gdzie dodać klucze SSH, aby umożliwić połączenia ze zdalnym serwerem na Androidzie?

10

Używam zrootowanego niestandardowego jądra Androida (Gingerbread) i jestem w stanie połączyć się ze zdalnym serwerem SSH z uwierzytelnianiem za pomocą hasła za pomocą busybox i emulatora terminali. Chciałbym móc używać kluczy SSH do automatycznego logowania; czy to możliwe? Jeśli tak, to gdzie powinienem umieścić mój klucz prywatny?

yuttadhammo
źródło

Odpowiedzi:

10

Nie jest tak płynny, ale sshplik binarny dostarczany przez busybox (przynajmniej mój) obsługuje -iflagę, więc możesz umieścić klucz w dowolnym miejscu i użyć go:

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

Odpowiedni wpis strony-i podręcznika dla (z zastrzeżeniem, że informacje o domyślnej ścieżce mogą nie być takie same w systemie 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
źródło
Dzięki, myślałem o tym, ale nigdy nie próbowałem tego. Po prostu wydaje się dziwne, że nie ma miejsca, w którym komenda ssh będzie szukać katalogu .ssh ... może to dlatego, że nie ustawiono $ HOME?
yuttadhammo
2
@Yuttadhammo: Dziwne jest to, że $HOME(dla roota) jest ustawiony /datana moim telefonie, ale sshwydaje się ignorować katalogi, które próbuję tam skonfigurować. Nigdy tak naprawdę nie odkryłem, dlaczego tak jest, ale nie musiałem też naprawdę w to zagłębiać się.
eldarerathis
@ Yuttadhammo W moim telefonie echo $HOMEnic nie zwraca (nawet rootowanie ). Jeśli tak jest również w twoim przypadku, jest to powód, dla którego twój klient SSH domyślnie nie widzi kluczy. Ale z -iflagą możesz zastąpić domyślną ścieżkę, więc nie ma sensu szukać $ HOME. To poprawne rozwiązanie, jeśli Twój skrócony klient SSH obsługuje go. Więc wypróbuj po włożeniu kluczy do sdcard. Jeśli się nie powiedzie, nie będzie innego wyjścia, chyba że zmienisz klienta SSH.
Android Quesito
Świetny. Pracował dla mnie.
user20203293928832
6

Zainstaluj i uruchom ConnectBot (dedykowany klient SSH). Naciśnij / naciśnij klawisz menu. W menu dotknij Manage Pubkeys. Na następnym ekranie ponownie naciśnij / naciśnij klawisz menu. W menu dotknij Import.

Android Quesito
źródło
Dzięki, właśnie to zrobiłem - fajna aplikacja; czy nie ma sposobu, aby po prostu gdzieś umieścić klucz i odebrać go przez busybox?
yuttadhammo
@Yuttadhammo Nie sądzę, że domyślne opakowanie Busybox zapewnia klienta SSH. Czy możesz dokładniej określić swój klient SSH (który może być narzędziem zewnętrznym)?
Android Quesito
Pamiętaj również, że ponieważ aplety busyboksa są skracane w stosunku do oryginalnych, klient SSH z wiersza poleceń może nie obsługiwać uwierzytelniania za pomocą klucza, ale jest to mało prawdopodobne. Po prostu powiedz mi o swoim kliencie SSH.
Android Quesito
Dzięki, ConnectBot jest rozwiązaniem, którego będę używać, ale flaga -i jest naprawdę bliższa odpowiedzi na pytanie.
yuttadhammo