Где добавить ключи SSH, чтобы разрешить подключения к удаленному серверу на Android?
10
Я использую рутированное пользовательское ядро Android (Gingerbread) и могу подключиться к удаленному SSH-серверу с аутентификацией по паролю с помощью busybox и приложения эмулятора терминала. Я хотел бы иметь возможность использовать ключи SSH для автоматического входа в систему; Это возможно? Если так, где я должен положить свой закрытый ключ?
Это не так просто, но 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.
Спасибо, я думал об этом, но не удосужился попробовать. Просто кажется странным, что нет места, где команда 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.
Спасибо, я на самом деле только что сделал это - отличное приложение; нет ли способа просто положить ключ куда-нибудь и сделать так, чтобы busybox поднял его?
Юттадхаммо
@Yuttadhammo Я не думаю, что стандартная упаковка Busybox предоставляет SSH-клиент. Можете ли вы быть более конкретным с вашим клиентом SSH (который может быть внешней утилитой)?
Android Quesito
Кроме того, помните ... поскольку апплеты busybox урезаны по сравнению с оригинальными, ваш SSH-клиент из командной строки может не поддерживать аутентификацию с ключом, но это очень маловероятно. Просто расскажите мне о вашем SSH-клиенте.
Android Quesito
Спасибо, ConnectBot - это решение, которое я буду использовать, но флаг -i действительно ближе к ответу на вопрос.
$HOME
(для пользователя root) установлено/data
на моем телефоне, но,ssh
похоже, игнорирует все каталоги, которые я пытаюсь установить там. Я никогда не понимал, почему это так, но у меня не было необходимости действительно углубляться в это.echo $HOME
ничего не возвращается (даже для root). Если это тоже ваш случай, то причина, по которой ваш SSH-клиент не видит ключи по умолчанию. Но с-i
флагом вы можете переопределить путь по умолчанию, поэтому нет смысла искать $ HOME. Это правильное решение, если ваш урезанный SSH-клиент это поддерживает. Итак, попробуйте после помещения ключей на SDCard. Если это не удается, другого пути нет, если вы не измените SSH-клиент.Установите и запустите ConnectBot (выделенный SSH-клиент). Нажмите / нажмите клавишу меню. В меню коснитесь
Manage Pubkeys
. На следующем экране снова нажмите / нажмите кнопку меню. В меню коснитесьImport
.источник