gpt4 book ai didi

java - 如何在java中为ssh连接设置密码

转载 作者:搜寻专家 更新时间:2023-11-01 03:18:56 25 4
gpt4 key购买 nike

我想使用 java 代码连接我的 unix 服务器。首先它将连接到我的服务器位置。在里面它将连接到我的服务器名称。但那时它会要求确认(是/否)和密码我不知道该怎么做?这是我完成的代码。请帮助我解决这个问题

public static void main (String args[]) {
String user = "user";
String password = "password";
String host = "hostName";
int port=22;

//String remoteFile="/home/john/test.txt";
//String yes="yes";

try {
JSch jsch = new JSch();
Session session = jsch.getSession(user, host, port);
session.setPassword(password);
session.setConfig("StrictHostKeyChecking", "no");
System.out.println("Establishing Connection...");
session.connect();
Channel channel = session.openChannel("exec");

// After this it'll ask for confirmation and password
((ChannelExec)channel).setCommand("ssh myServerName");
channel.connect();

InputStream output = channel.getInputStream();

System.out.println("aafter stream");
int readByte = output.read();
StringBuilder outputBuffer = new StringBuilder();
while (readByte != 0xffffffff) {
//System.out.println("read byte" + readByte);
outputBuffer.append((char)readByte);
readByte = output.read();
}
System.out.println(outputBuffer.toString());
channel.disconnect();
} catch (Exception e){
System.err.print("error message" + e);
}
}

最佳答案

需要获取JSch安全通道的OutputStream,并在其中插入密码。

Channel channel = session.openChannel("exec");
((ChannelExec) channel).setCommand("sudo -S -p '' " + command);
channel.setInputStream(null);
OutputStream out = channel.getOutputStream();
((ChannelExec) channel).setErrStream(System.err);
InputStream in = channel.getInputStream();
((ChannelExec) channel).setPty(true);
channel.connect();
out.write((password + "\n").getBytes());
out.flush();

完整的源代码在这里:http://codeflex.co/java-run-sudo-command-on-remote-linux-host/

关于java - 如何在java中为ssh连接设置密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37460690/

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