5

ssh経由で接続し、稼働中のサーバー(redhat linux)でいくつかの処理を実行するJavaプログラムを作成しようとしています。私の箱は窓です。私はsshjについて読み、例を機能させようとしています。私はほとんどの依存関係を処理しましたが、パブリック/プライベートキーの処理でエラーが発生しましたが、残念ながらそこにもあまりわかりません(はい、初心者の完全な嵐です!)。エラーは次のとおりです。

スレッド「メイン」の例外net.schmizz.sshj.transport.TransportException:[HOST_KEY_NOT_VERIFIABLE]ポート22のフィンガープリントでssh-rsaホストキーを確認できませんでした5f:d6:94:00:9e:ec:7e:34:6d:d0:d3:76:df:5e:dd:3dmyserver

コードは次のとおりです。

import net.schmizz.sshj.SSHClient;
import net.schmizz.sshj.common.IOUtils;
import net.schmizz.sshj.connection.channel.direct.Session;
import net.schmizz.sshj.connection.channel.direct.Session.Command;

import java.io.IOException;
import java.util.concurrent.TimeUnit;

/** This examples demonstrates how a remote command can be executed. */
public class sshBuddy {

    public static void main(String... args)
            throws IOException {
        final SSHClient ssh = new SSHClient();
        ssh.loadKnownHosts();
        //ssh.addHostKeyVerifier("5f:d6:94:00:9e:ec:7e:34:6d:d0:d3:76:df:5e:dd:3d");

        ssh.connect("myserver");
        try {
            ssh.authPublickey(System.getProperty("myusername"));
            final Session session = ssh.startSession();
            try {
                final Command cmd = session.exec("ping -c 1 google.com");
                System.out.println(IOUtils.readFully(cmd.getInputStream()).toString());
                cmd.join(5, TimeUnit.SECONDS);
                System.out.println("\n** exit status: " + cmd.getExitStatus());
            } finally {
                session.close();
            }
        } finally {
            ssh.disconnect();
        }
    }

}

助けていただければ幸いです、ありがとう!

4

3 に答える 3

9

これを試してみてください

ssh.addHostKeyVerifier(new PromiscuousVerifier());

これはうまくいくはずです

于 2014-09-24T08:22:37.157 に答える
1

これを試して

    public class sshBuddy {

    public static void main(String... args)
            throws IOException {
        final SSHClient ssh = new SSHClient();
        //ssh.loadKnownHosts();
        ssh.addHostKeyVerifier("5f:d6:94:00:9e:ec:7e:34:6d:d0:d3:76:df:5e:dd:3d");

        ssh.connect("myserver");
        try {
            ssh.authPublickey(System.getProperty("myusername"));
            final Session session = ssh.startSession();
            try {
                final Command cmd = session.exec("ping -c 1 google.com");
                System.out.println(IOUtils.readFully(cmd.getInputStream()).toString());
                cmd.join(5, TimeUnit.SECONDS);
                System.out.println("\n** exit status: " + cmd.getExitStatus());
            } finally {
                session.close();
            }
        } finally {
            ssh.disconnect();
        }
    }
}

addHostKeyVerifier のコメントを外し、loadKnownHosts をコメントにします。それはうまくいくはずです。

于 2012-07-11T11:10:28.070 に答える