Во-первых, вы можете ограничить на стороне сервера то, что может делать учетная запись пользователя - сделайте это.(Некоторые советы приведены ниже.)
Во-вторых, я бы использовал метод аутентификации с открытым ключом.Генерируйте (разные) закрытые ключи для каждого из пользователей и сохраняйте их на своих телефонах (телефоны Android имеют какую-то файловую систему, не так ли?), Возможно, зашифровывают паролем (поэтому злые воры телефонов не могут использовать ключ).
(Возможно, имеется какое-то встроенное устройство для хранения крипто-ключей - если это так, вы, безусловно, можете использовать это. Но я не знаю достаточно об Android, чтобы помочь здесь.)
Предполагая, что сервер использует OpenSSH sshd , вы можете поместить файл ~/.ssh/authorized_keys
в домашний каталог этого пользователя, который содержит открытые ключи личных ключей каждого телефона.Эти ключевые строки могут содержать параметры, которые могут использоваться для принудительного ввода команды (чтобы разрешить только sftp / scp) или для отключения всех видов пересылки.Дополнительные опции доступны в sshd sshd_config - вы можете захотеть запустить отдельный sshd в тюрьме для этих загрузок вместо использования основного.
Из JSch вы можете включить publicаутентификация с помощью одного из методов addIdentity
объекта JSch .(Отказ от ответственности: документация JSch была написана мной.)
Вам также следует доставить открытый ключ вашего сервера вместе с приложением (а не отключать проверку соединения), чтобы предотвратить атаки "человек посередине".Вы можете использовать метод setKnownHosts
, чтобы предоставить JSch список известных ключей хоста.