Проверка учетных данных SSH в Java в Unix - PullRequest
1 голос
/ 07 мая 2009

У меня есть текстовый файл на компьютере с Unix, содержащий имя пользователя и пароль SSH, которые кто-то может использовать для подключения к нему.

Как проверить, что имя пользователя и пароль действительны при использовании Java?

Пытаюсь ли я подключиться по SSH к той же машине с помощью Runtime.exec ()?

Я могу grep для пользователя / etc / passwd. Но пароль скрыт.

Буду признателен за любые предложения.

Ответы [ 3 ]

1 голос
/ 07 мая 2009

Возможно, вопрос можно было бы расширить на «Проверка учетных данных UNIX из Java», поскольку объясненный механизм на самом деле не зависит от ssh.

Вот мой пример лучшей альтернативы, подобной Expect (например, с ProcessBuilder ) без использования служебной информации сетевого стека:

su -u username -c echo

Просто проверьте статус выхода, чтобы узнать ответ. (Бонусные баллы: su присутствует во всех операционных системах UNIX, и, возможно, он также присутствует в PATH и подходит для других внешних систем аутентификации, таких как LDAP).

0 голосов
/ 08 мая 2009

Помните, что в аутентификации UNIX есть нечто большее, чем / etc / passwd и / etc / shadow. Например, они могут проходить проверку подлинности на основе Kerberos, LDAP, NIS или любого другого количества источников. По этой причине я настоятельно рекомендую изучить оболочку PAM для Java. Быстрый гугл обнаружился http://jpam.sourceforge.net/, но у меня нет опыта работы с ним.

Конечно, sshd может быть настроен так, чтобы вообще не использовать PAM или разрешать только определенным пользователям и т. Д. Если вы хотите точно следовать правилам sshd, то это что-то меняет, но похоже, что аутентификация PAM больше чего хочешь.

0 голосов
/ 07 мая 2009

Если у вас есть root-доступ, то, конечно, вы можете прочитать / etc / shadow . Я бы сказал, что это «правильный» способ сделать это.

Кроме этого, ваш легкомысленный способ вызова ssh должен быть в порядке, я думаю, но я бы использовал ssh для запуска команды , которая, скажем, создала какой-то случайный временный файл - тогда, если файл был создан (или команда выполнена), вы предполагаете, что имя пользователя / пароль были правильными. Звучит странно, но вы, вероятно, можете заставить его работать в чрезвычайной ситуации.

О, конечно, у брега есть побочный эффект, который вы фактически вошли как тот пользователь. Это может или не быть желательным ...!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...