gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 12:06:26 28 4
gpt4 key购买 nike

我正在尝试使用基于公钥/私钥的身份验证通过 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/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com