2

sshj Java APIを使用してユーザー名とパスワードでリモートマシンに接続するには?

このコードを試しました。このコードの問題は何ですか?

final SSHClient ssh = new SSHClient();
        ssh.connect("192.168.0.1");
        ssh.authPassword("abcde", "fgh".toCharArray());
        try {
            final Session session = ssh.startSession();
            try {
                final Command cmd = session
                        .exec("cd /home/abcde/Desktop/");
                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();
        }

この次のエラーをスローしています。

net.schmizz.sshj.transport.TransportException: [HOST_KEY_NOT_VERIFIABLE]ポート 22のフィンガープリントでssh-rsaホスト キーを検証できませんでした********192.168.0.1

4

3 に答える 3

10

HostKeyVerifier を実装することで問題を解決します

class NullHostKeyVerifier implements HostKeyVerifier {
    @Override
    public boolean verify(String arg0, int arg1, PublicKey arg2) {
        return true;
    }        
}

この偽の実装を SSHClient インスタンス構成に追加します。

...
    final SSHClient ssh = new SSHClient();
    ssh.addHostKeyVerifier(new NullHostKeyVerifier());
...
于 2012-07-23T16:27:32.367 に答える