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)
 }

Теперь, если я использую этот фрагмент для подключения к хосту, когда у меня есть правильный файл конфигурации хоста, он работает. Но есть несколько вещей, которые я не могу понять:

  1. в случае хоста с настроенными ключами клиента и без файла хоста блок кода не выполняется
  2. ошибки появляются в левой проекции (странно для меня, почему не исключение? кажется, легко пропустить ошибку)
    • если я использую файл конфигурации хоста для хоста с настроенными ключами клиента, но предоставлю login-type: keyfile поле и пропустить поле пароля, то я получаю:

LeftProjection (Left (не удалось аутентифицироваться (с помощью ключевого файла) для server_with_client_keys_configured:22 из-за net.schmizz.sshj.userauth.UserAuthException: исчерпаны доступные методы аутентификации))

Наконец, если это просто случай, когда Scala SSH не поддерживает обмен открытыми ключами, может ли кто-то предложить альтернативу?

0 ответов

Другие вопросы по тегам