私はscalaの初心者であり、Scala SSHを使用してSSHクライアントキー/公開鍵交換が構成されたサーバーに接続する方法を理解しようとしています。私の目標は、アプリケーションでパスワードを提供する必要なく、クライアント キーの適切な構成でサーバーへの SSH 接続を成功させることです。適切なクライアント キー構成を持たないサーバーの場合、ユーザーが適切なHost Config Fileを設定していることが期待されます。これは私がこれまでに持っているものです:
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(net.schmizz.sshj.userauth.UserAuthException により、server_with_client_keys_configured:22 に対して (キーファイルで) 認証できませんでした: 利用可能な認証方法が使い果たされました))
最後に、これが Scala SSH が公開鍵交換をサポートしていないという単なるケースである場合、誰かが代替案を提案できますか?