1

公開鍵/秘密鍵ベースの認証を使用して、SSH 経由でリモート クエリを実行しようとしています。次のコマンドは正常に機能し、ローカル ホストとリモート サーバー間で公開鍵を共有した後、必要な出力を bash シェルの文字列として提供します。

echo 123456 12@13:14 ABCD abc1234 | ssh -T user@abc.xyz.com

JSCHまたはSSHJまたは他の同様のライブラリを使用してJAVAで同じことを達成するにはどうすればよいですか

これは、これまで SSHJ を使用して試したことですが、うまくいきませんでした (接続は成功しましたが、結果はありません)。

public static void main(String... args)throws IOException {
    final SSHClient ssh = new SSHClient();
    ssh.loadKnownHosts();

    ssh.connect("abc.xyz.com");
    try {
        ssh.authPublickey("user");
        final Session session = ssh.startSession();
        try {
            final Command cmd = session.exec("123456 12@13:14 ABCD abc1234");
            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();
        ssh.close();
    }
}
4

1 に答える 1

0

以下のコードはJSCHライブラリを使用しており、私の最後に取り組んでいます:-

        JSch jsch = new JSch();

        String path = "PATH TO PRIVATE KEY"; 

        jsch.addIdentity(path);

        jsch.setConfig("StrictHostKeyChecking", "no");

        Session session = jsch.getSession(userName, ipToConnect, portToConnect);
        session.connect();

        Channel channel = session.openChannel("exec");

        ((ChannelExec)channel).setCommand("COMMAND TO FIRE");

        channel.setInputStream(null);

        ((ChannelExec)channel).setErrStream(System.err);

        InputStream in = channel.getInputStream();

        channel.connect();

        //Read Response Here 

        channel.disconnect();
        session.disconnect();

注 : JSCH のキー ベースの代わりに、パスワード ベースの認証を使用することもできます。

于 2016-10-30T05:48:14.403 に答える