1. ホーム
  2. java

[解決済み] com.jcraft.jsch.JSchException: UnknownHostKey

2022-02-17 17:35:33

質問

を使おうとしています。 Jsch を使用して、Java で SSH 接続を確立します。私のコードでは、以下の例外が発生します。

com.jcraft.jsch.JSchException: UnknownHostKey: mywebsite.com. 
RSA key fingerprint is 22:fb:ee:fe:18:cd:aa:9a:9c:78:89:9f:b4:78:75:b4

Jschのドキュメントにホストキーの検証方法が載っていないのですが。以下に私のコードを記載します。

import com.jcraft.jsch.JSch;
import com.jcraft.jsch.Session;

public class ssh {
    public static void main(String[] arg) {

        try {
            JSch jsch = new JSch();

            //create SSH connection
            String host = "mywebsite.com";
            String user = "username";
            String password = "123456";

            Session session = jsch.getSession(user, host, 22);
            session.setPassword(password);
            session.connect();

        } catch(Exception e) {
            System.out.println(e);
        } 
    }
}

解決方法は?

私なら、どちらかです。

  1. を試してみてください。 ssh をコマンドラインから実行し、公開鍵を受け取ります (ホストが ~/.ssh/known_hosts で、Jsch からはすべて正常に動作するはずです) -OR-
  2. 以下のコードを使用して、JSchが"StrictHostKeyChecking"を使用しないように設定します(これは安全性を高めるため、テスト目的にのみ使用する必要があります)。

    java.util.Properties config = new java.util.Properties(); 
    config.put("StrictHostKeyChecking", "no");
    session.setConfig(config);
    
    

オプション #1 (ホストを ~/.ssh/known_hosts ファイル)が私の好みです。