Scala SSH: подключение к хостам с обменом открытыми ключами
Я новичок в scala и пытаюсь понять, как использовать Scala SSH для подключения к серверу с настроенным обменом ключами клиента SSH / открытым ключом. Моя цель - создать успешное SSH-соединение с сервером с правильной настройкой клиентских ключей без необходимости ввода пароля в приложении. В случае серверов, которые не имеют надлежащей конфигурации ключа клиента, можно ожидать, что пользователь настроил правильный файл конфигурации хоста. Это то, что я до сих пор:
try {
SSH("server_with_client_keys_configured") { client =>
val x = client.exec("ls -a")
println(x.left)
x.right.map { result =>
println("Result:\n" + result.stdOutAsString())
}
} catch {
case e: Exception => println(e)
}
Теперь, если я использую этот фрагмент для подключения к хосту, когда у меня есть правильный файл конфигурации хоста, он работает. Но есть несколько вещей, которые я не могу понять:
- в случае хоста с настроенными ключами клиента и без файла хоста блок кода не выполняется
- ошибки появляются в левой проекции (странно для меня, почему не исключение? кажется, легко пропустить ошибку)
- если я использую файл конфигурации хоста для хоста с настроенными ключами клиента, но предоставлю
login-type: keyfile
поле и пропустить поле пароля, то я получаю:
- если я использую файл конфигурации хоста для хоста с настроенными ключами клиента, но предоставлю
LeftProjection (Left (не удалось аутентифицироваться (с помощью ключевого файла) для server_with_client_keys_configured:22 из-за net.schmizz.sshj.userauth.UserAuthException: исчерпаны доступные методы аутентификации))
Наконец, если это просто случай, когда Scala SSH не поддерживает обмен открытыми ключами, может ли кто-то предложить альтернативу?