java - 如何使用 JAVA 将字符串回显到 SSH

标签 java ssh jsch sshj

我正在尝试使用基于公钥/私钥的身份验证通过 SSH 执行远程查询。以下命令工作正常,并在本地主机和远程服务器之间共享公钥后,在 bash shell 上以字符串形式提供所需的输出。

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();
    }
}

最佳答案

下面的代码使用 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 的 keystore

关于java - 如何使用 JAVA 将字符串回显到 SSH,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40316828/

相关文章:

java - 有时,类在加载时编织期间不会被编织

java - 基于 JDBC 的工具来导入/导出数据库模式

linux - 如果我正在使用 ssh 远程执行其中一个脚本,那么在将参数从一个脚本传递到另一个脚本时如何保留空格?

python - 为什么我在使用 fabric 时会收到提示?

java - 使用 jsch 将文件从 linux 服务器目录复制到其他目录

java - 如果输出大小很大,JSch 终端输出读取会失败

java - 在 Java 标准应用程序中显示 ExcelSheet

java - Google Dictionary API 现在是否属于 Google 自定义引擎?

git - SSHing git@github.com 显示错误/旧的 SSH key

java - 即使 java 代码终止,JSch 也会继续执行该命令吗?