6

known_hostsからリモートサーバーキーを削除して、再度追加できるようにしたい。リモートサーバーは頻繁に更新されるので、リモートホストキーを自動的に削除して、その新しいキーをknown_hostsに追加したいと思います。Processキーは不格好で、 JSCHを経由する代わりに使用しますが、known_hostsからキーを削除できます。これは機能しますが、サーバーにアクセスしようとすると、次のメッセージが表示されます。

The authenticity of host '192.168.1.1 (192.168.1.1)' can't be established.
RSA key fingerprint is 10:10:30:00:e7:0c:d3:18:cf:ac:42:e2:f3:51:25:bg.
Are you sure you want to continue connecting (yes/no)? 

UserInfoを使用してこのメ​​ッセージを回避できることはわかっていますが、リモートサーバーに接続する他の方法を使用しています。たとえば、Processこれらのコマンドを実行するとメッセージが表示されます。

JSCHを使用してknown_hostsからホストIDを削除および追加することは可能ですか?

jschを使用していませんが、関連している可能性があります。

〜/ .ssh / known_hostsから廃止されたホストキーを削除するプログラム(スクリプト)を作成するにはどうすればよいですか?

4

2 に答える 2

9

はい、JSchを使用してknown_hostsファイルにリモートホストエントリを追加できます。ジム・ギャリソンが答えたように、この問題を回避する方法は他にもありますが、コードでそれを行う方法は次のとおりです。

まず、デフォルトとして、known_hostsファイルを指定しなくても、JSchは引き続き機能し、実行時のknown_hostファイルをメモリに作成し、厳密なホストキーチェックが'に設定されている限り、エントリを自動的に追加することを理解してください。いいえ'。

既知のホストファイルを指定した場合、厳密なホストキーチェックが「いいえ」に設定されていると、JSchはそのファイルに新しいエントリを追加します。

        JSch jsch = new JSch();

        jsch.setKnownHosts(knownHostsFile);
        logger.info("known hosts file set: " + knownHostsFile);

        jsch.addIdentity(privateKey);
        logger.info("rsa private key loaded: " + privateKey);

        Session session = jsch.getSession(user, host, port);
        java.util.Properties config = new java.util.Properties();

        // this setting will cause JSCH to automatically add all target servers' entry to the known_hosts file
        config.put("StrictHostKeyChecking", "no");  
        session.setConfig(config);

        session.connect();

これはあまり安全な動作ではありませんが、JSChに新しいサーバーエントリを設定させるための便利な方法です。既知のhostsファイルをセットアップしたら、StrictHostKeyCheckingをyesに戻すことをお勧めします。

于 2013-03-26T19:12:31.950 に答える
0

プログラムで操作する必要はありませんknown_hosts

ssh -oStrictHostKeyChecking=no remote-host

または追加

StrictHostKeyChecking no

~/.ssh/config。詳細については、ssh_config(5)manページをお読みください。

于 2013-03-26T16:38:59.397 に答える