Где добавить ключи SSH, чтобы разрешить подключения к удаленному серверу на Android?

10

Я использую рутированное пользовательское ядро ​​Android (Gingerbread) и могу подключиться к удаленному SSH-серверу с аутентификацией по паролю с помощью busybox и приложения эмулятора терминала. Я хотел бы иметь возможность использовать ключи SSH для автоматического входа в систему; Это возможно? Если так, где я должен положить свой закрытый ключ?

yuttadhammo
источник

Ответы:

10

Это не так просто, но sshдвоичный файл, предоставляемый busybox (по крайней мере, моим), поддерживает -iфлаг, так что вы можете поместить ключ куда угодно и использовать его:

ssh -i /path/to/key_file joeuser@somehost.com

Соответствующая запись справочной страницы для -i(с оговоркой, что информация о пути по умолчанию может не совпадать на 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
источник
Спасибо, я думал об этом, но не удосужился попробовать. Просто кажется странным, что нет места, где команда ssh будет искать каталог .ssh ... может быть, это потому, что не установлен $ HOME?
Юттадхаммо
2
@Yuttadhammo: Странно то, что $HOME(для пользователя root) установлено /dataна моем телефоне, но, sshпохоже, игнорирует все каталоги, которые я пытаюсь установить там. Я никогда не понимал, почему это так, но у меня не было необходимости действительно углубляться в это.
eldarerathis
@Yuttadhammo В моем телефоне echo $HOMEничего не возвращается (даже для root). Если это тоже ваш случай, то причина, по которой ваш SSH-клиент не видит ключи по умолчанию. Но с -iфлагом вы можете переопределить путь по умолчанию, поэтому нет смысла искать $ HOME. Это правильное решение, если ваш урезанный SSH-клиент это поддерживает. Итак, попробуйте после помещения ключей на SDCard. Если это не удается, другого пути нет, если вы не измените SSH-клиент.
Android Quesito
Отлично. Работал на меня.
user20203293928832
6

Установите и запустите ConnectBot (выделенный SSH-клиент). Нажмите / нажмите клавишу меню. В меню коснитесь Manage Pubkeys. На следующем экране снова нажмите / нажмите кнопку меню. В меню коснитесь Import.

Android Quesito
источник
Спасибо, я на самом деле только что сделал это - отличное приложение; нет ли способа просто положить ключ куда-нибудь и сделать так, чтобы busybox поднял его?
Юттадхаммо
@Yuttadhammo Я не думаю, что стандартная упаковка Busybox предоставляет SSH-клиент. Можете ли вы быть более конкретным с вашим клиентом SSH (который может быть внешней утилитой)?
Android Quesito
Кроме того, помните ... поскольку апплеты busybox урезаны по сравнению с оригинальными, ваш SSH-клиент из командной строки может не поддерживать аутентификацию с ключом, но это очень маловероятно. Просто расскажите мне о вашем SSH-клиенте.
Android Quesito
Спасибо, ConnectBot - это решение, которое я буду использовать, но флаг -i действительно ближе к ответу на вопрос.
Юттадхаммо