与Java的SSH连接

时间:2010-06-18 17:17:18

标签: java ssh connection

如何使用Java连接SSH服务器?我不需要/想要一个shell。我只想连接到SSH服务器并获取file.txt的内容。我怎么能这样做?

8 个答案:

答案 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();