web-dev-qa-db-ja.com

Windowsマシンでknown_Hostsファイルを生成する方法

以下に示すように、Jsch(Jcraft)ライブラリを使用してSSHサーバーとのSSH接続を確立しています。

        JSch jsch = new JSch();
        String user = "****";
        String Host = "****";
        int port = 22;
        String privateKey = "***.ppk";//Path to private key(The file is in .ppk format)
        try 
        {
            jsch.addIdentity(privateKey);
            Session session = jsch.getSession(user, Host, port);
            Java.util.Properties config = new Java.util.Properties(); 
            config.put("StrictHostKeyChecking", "no");
            session.setConfig(config);
            session.connect();
            ChannelSftp sftpChannel = (ChannelSftp) session.openChannel("sftp");
            sftpChannel.connect();
            /*file transfer code*/
            sftpChannel.disconnect();
            session.disconnect();
        }
        catch (Exception e) 
        {
            e.printStackTrace();
        }

「StrictHostKeyChecking」が無効になっているため、SSH接続は正常に確立されます。有効にすると、次のエラーが発生します。

com.jcraft.jsch.JSchException: UnknownHostKey: ******. RSA key f
 is *************
        at com.jcraft.jsch.Session.checkHost(Session.Java:805)
        at com.jcraft.jsch.Session.connect(Session.Java:345)
        at com.jcraft.jsch.Session.connect(Session.Java:183)

以下に示すように、コードに既知のホストファイルを設定する必要があることを理解しています。

jsch.setKnownHosts(knownHostsFileName); 

以下のコマンドでknown_hostsファイルを生成できません:

ssh-keyscan <Host> > known_hosts 

次のエラーがスローされます:

'ssh-keyscan' is not recognized as an internal or external command,
operable program or batch file.

.ppk形式の公開鍵と秘密鍵しか持っていません。私はknown_Hostファイルを持っていません。
known_Hostファイルを作成するにはどうすればよいですか?
なぜssh-keyscanコマンドスローエラー-内部/外部コマンドとして認識されないのですか?

4
Karthik

ssh-keyscanはLinux/Unixからのコマンドです。 Windowsで実行するには、Windowsで実行するように変更されたバージョンが必要です。最も簡単なのは、 git-for-windowsdownload )をインストールし、Git Bashを開くことです。このコンソール内では、ssh-keyscanコマンドを使用できます。

3
DdW

このファイルは通常、ssh-keyscanによって、またはユーザーのSSHホストへの接続によって作成されます。

コマンドで簡単に作成できます

ssh-keyscan [Host]

出力を保存します。 -Hオプションはハッシュ出力を有効にしますが、問題のライブラリがそれを使用できるかどうかはわかりません。

known_hostsファイル自体は、最初にホストフィンガープリントを確認しないとあまり役に立たないことに注意してください。次の注意は、ssh-keyscanのマニュアルページから直接引用したものです。

SECURITY
     If an ssh_known_hosts file is constructed using ssh-keyscan without veri-
     fying the keys, users will be vulnerable to man in the middle attacks.
     On the other hand, if the security model allows such a risk, ssh-keyscan
     can help in the detection of tampered keyfiles or man in the middle
     attacks which have begun after the ssh_known_hosts file was created
1
Cong Ma