java ssh连接 如何不使用密码_如何在java中为ssh连接设置密码
我想用
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();
總結
以上是生活随笔為你收集整理的java ssh连接 如何不使用密码_如何在java中为ssh连接设置密码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java非法字符65289_求详细点的回
- 下一篇: 计算机java语言答案_【计算机二级Ja