Подтвердить что ты не робот

SSH-соединение с Java

Как подключиться к SSH-серверу на Java? Мне не нужна/нужна оболочка. Я просто хочу подключиться к серверу SSH и получить содержимое, скажем, file.txt. Как я могу это сделать?

4b9b3361

Ответ 1

Используйте 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

Ответ 2

Java не поддерживает это изначально, но вы можете использовать эту библиотеку, например JSch

Ответ 3

Взгляните на Jaramiko.

Ответ 4

Вы должны использовать стороннюю библиотеку - JSch является одним из них. Google с "Java ssh", и вы получите множество других опций.

Ответ 5

Вы можете проверить JSSH, который является Java SSH-библиотекой.

Ответ 6

http://www.ganymed.ethz.ch/ssh2/ реализует клиент ssh2 в Java. Я использую его для перенаправления портов.

Ответ 7

Не уверен на 100%, но я считаю, что сокеты во многом связаны с ssh-соединениями, если вы не пытаетесь выполнить предустановленное приложение для управления командами. Существует множество внешних пакетов, которые вы можете использовать для достижения этой цели, но если вы хотите создать свой собственный сокет, потребуется много чтения и дешифрования/шифрования, чтобы сделать это.

Также создание собственного сокета опасно, если оно не выполнено правильно с правильными протоколами и спецификациями безопасности, так что будьте осторожны, пока вы не уверены на 100%, что способны посвятить себя достаточному обучению.

Ответ 8

Я использовал это и работал у меня

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