我是 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(左(由于 net.schmizz.sshj.userauth.UserAuthException:用尽可用的身份验证方法,无法对 server_with_client_keys_configured:22 进行身份验证(使用密钥文件)))
最后,如果这只是 Scala SSH 不支持公钥交换的情况,那么有人可以提出替代方案吗?