Играя с приложением ssh и public_key в Erlang, я обнаружил замечательную функцию .
Я пытался подключиться к работающему демону Erlang SSH с помощью ключа rsa , но аутентификация не удалась, и мне предложили ввести пароль.
После некоторой отладки и трассировки (и пары кофе) я понял, что по какой-то странной причине там был недействительный ключ для моего пользователя. Файл authorized_keys содержал два ключа . В какой-то момент в файле был неправильный файл, а в конце файла был добавлен правильный.
Теперь приложение Erlang SSH, сравнивая предоставленный ключ с ключами, содержащимися в авторизованных ключах, находило первую запись (полностью игнорируя вторую - правильную). Затем он переключался на другой механизм аутентификации (сначала он пытался dsa вместо rsa , а затем запрашивал пароль).
Вопрос в том, предназначено ли это поведение, или сервер SSH должен проверять наличие нескольких записей для одного и того же пользователя в файле authorized_keys ? Это общее поведение SSH или оно специфично для реализации Erlang?