3

我是 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(左(由于 net.schmizz.sshj.userauth.UserAuthException:用尽可用的身份验证方法,无法对 server_with_client_keys_configured:22 进行身份验证(使用密钥文件)))

最后,如果这只是 Scala SSH 不支持公钥交换的情况,那么有人可以提出替代方案吗?

4

0 回答 0