Пароль подключения Android к SSH серверу - PullRequest
0 голосов
/ 03 декабря 2011

У меня есть приложение для Android, которое предназначено для использования около 10 человек, то есть оно не будет опубликовано и находится "в доме".Приложение соединяет пользователя с сервером SSH, используя jsch.Я столкнулся с проблемой при принятии решения, как пользователь входит в систему.Несмотря на то, что приложение сильно ограничивает функциональность пользователя при входе на сервер (в основном, позволяя загружать только определенные файлы), им все равно необходимо войти в систему с паролем пользователя (все используют одну и ту же учетную запись пользователя).Я не думаю, что было бы хорошей идеей выдавать такой пароль, поэтому я думаю о том, как разрешить пользователю использовать приложение, не зная пароля для входа.Мои идеи пока.

(1) сгенерируйте ключ ssh и поместите его на каждое устройство Android.(Я не уверен, как это сделать, или если это возможно).

(2) зашифруйте пароль и сохраните его на телефоне, а затем создайте «пароль приложения», чтобы пользователь мог войти в приложение.

Я хотел бы получить совет о том, что лучшекурс действий.

Ответы [ 2 ]

0 голосов
/ 04 декабря 2011

Во-первых, вы можете ограничить на стороне сервера то, что может делать учетная запись пользователя - сделайте это.(Некоторые советы приведены ниже.)

Во-вторых, я бы использовал метод аутентификации с открытым ключом.Генерируйте (разные) закрытые ключи для каждого из пользователей и сохраняйте их на своих телефонах (телефоны Android имеют какую-то файловую систему, не так ли?), Возможно, зашифровывают паролем (поэтому злые воры телефонов не могут использовать ключ).

(Возможно, имеется какое-то встроенное устройство для хранения крипто-ключей - если это так, вы, безусловно, можете использовать это. Но я не знаю достаточно об Android, чтобы помочь здесь.)

Предполагая, что сервер использует OpenSSH sshd , вы можете поместить файл ~/.ssh/authorized_keys в домашний каталог этого пользователя, который содержит открытые ключи личных ключей каждого телефона.Эти ключевые строки могут содержать параметры, которые могут использоваться для принудительного ввода команды (чтобы разрешить только sftp / scp) или для отключения всех видов пересылки.Дополнительные опции доступны в sshd sshd_config - вы можете захотеть запустить отдельный sshd в тюрьме для этих загрузок вместо использования основного.

Из JSch вы можете включить publicаутентификация с помощью одного из методов addIdentity объекта JSch .(Отказ от ответственности: документация JSch была написана мной.)

Вам также следует доставить открытый ключ вашего сервера вместе с приложением (а не отключать проверку соединения), чтобы предотвратить атаки "человек посередине".Вы можете использовать метод setKnownHosts, чтобы предоставить JSch список известных ключей хоста.

0 голосов
/ 03 декабря 2011

Поскольку это собственное приложение только с 10 пользователями, почему бы вам не отправить значение IMEI телефона в процессе входа в систему. Затем вы можете иметь небольшую таблицу / файл на сервере с разрешенными номерами IMEI. Это сделало бы его немного похожим на фильтрацию MAC-адресов для беспроводных маршрутизаторов.

...