如何使用Java连接SSH服务器?我不需要/想要一个shell。我只想连接到SSH服务器并获取file.txt
的内容。我怎么能这样做?
答案 0 :(得分:42)
使用JSch
import com.jcraft.jsch.*;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.Scanner;
/**
* @author World
*/
public class SSHReadFile {
public static void main(String args[]) {
String user = "john";
String password = "mypassword";
String host = "192.168.100.23";
int port = 22;
String remoteFile = "/home/john/test.txt";
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();
System.out.println("Connection established.");
System.out.println("Crating SFTP Channel.");
ChannelSftp sftpChannel = (ChannelSftp) session.openChannel("sftp");
sftpChannel.connect();
System.out.println("SFTP Channel created.");
InputStream inputStream = sftpChannel.get(remoteFile);
try (Scanner scanner = new Scanner(new InputStreamReader(inputStream))) {
while (scanner.hasNextLine()) {
String line = scanner.nextLine();
System.out.println(line);
}
}
} catch (JSchException | SftpException e) {
e.printStackTrace();
}
}
}
<强>输出:强>
Establishing Connection...
Connection established.
Crating SFTP Channel.
SFTP Channel created.
This is content from file /home/john/test.txt
答案 1 :(得分:5)
Java不支持本机,但您可以使用像JSch这样的库来执行此操作
答案 2 :(得分:1)
看看Jaramiko。
答案 3 :(得分:1)
您必须使用第三方库 - JSch就是其中之一。 Google使用“Java ssh
”,您将获得许多其他选择。
答案 4 :(得分:1)
您可以检查JSSH,这是一个Java SSH库。
答案 5 :(得分:1)
http://www.ganymed.ethz.ch/ssh2/在Java中实现了一个ssh2客户端。我用它来进行端口转发。
答案 6 :(得分:0)
不能100%确定,但是我相信套接字与ssh连接有很大关系,除非您尝试执行预安装的命令操纵应用程序。您可以使用许多外部程序包来实现此目标,但是,如果您想自己创建套接字,则需要大量的读取和解密/加密才能完成此任务。
如果没有使用正确的协议和安全规范正确地创建自己的套接字,也是很危险的,因此请谨慎行事,直到您100%确信自己有足够的能力去学习为止。
答案 7 :(得分:-2)
我用过这个并为我工作
Channel channel=session.openChannel("exec");
String command = "Your Command here";
((ChannelExec)channel).setCommand(command);
InputStream in=channel.getInputStream();
((ChannelExec)channel).setErrStream(System.err);
channel.connect();