Erstellen Sie eine SSH-Verbindung in Java

MD Aminul Islam 12 Oktober 2023
Erstellen Sie eine SSH-Verbindung in Java

SSH, auch bekannt als Secure Shell oder Secure Socket Shell, ist ein Netzwerkprotokoll, das es uns ermöglicht, über eine gesicherte Verbindung eine Verbindung zu einem anderen Computer herzustellen.

Das heutige Tutorial behandelt das Öffnen einer SSH-Verbindung und demonstriert die Verwendung von JSch und Apache Mina SSHD zum Erstellen einer SSH-Verbindung.

Erstellen Sie eine SSH-Verbindung in Java

Es gibt verschiedene Möglichkeiten, aber die Verwendung von JSch und Apache Mina SSHD ist am gebräuchlichsten, also lernen wir sie nacheinander kennen.

Methode 1: Verwenden Sie JSch, um eine SSH-Verbindung in Java zu erstellen

JSch ist eine in reinem Java geschriebene Implementierung von SSH2. Mit dieser Bibliothek können Sie eine Verbindung zu einem SSHD-Server herstellen. Es ermöglicht Ihnen auch die Verwendung von X11-Weiterleitung, Port-Weiterleitung, Dateiübertragung und mehr.

Unser Beispiel unten erstellt eine einfache SSH-Verbindung mit dem JSch.

Beispielcode:

// Importing necessary packages
import com.jcraft.jsch.*;
import java.io.InputStream;

public class JavaJSCH {
  public static void main(String[] args) {
    // Organizing all necessary elements for authenticating
    String MyHost = "test.rebex.net";
    String User = "demo";
    String Password = "password";

    try {
      // Configuring
      java.util.Properties Config = new java.util.Properties();

      // Disable the 'StrictHostKeyChecking'
      Config.put("StrictHostKeyChecking", "no");

      // Declaring a JSch object
      JSch Jsch = new JSch();

      // Creating a session
      Session MySession = Jsch.getSession(User, MyHost, 22);

      // Setting the session password
      MySession.setPassword(Password);

      // Configuring the session
      MySession.setConfig(Config);

      // Connecting the session
      MySession.connect();
      System.out.println("Successfully Connected !!!");

    } catch (Exception e) {
      e.printStackTrace();
    }
  }
}

Ausgang:

Successfully Connected !!!

Methode 2: Verwenden Sie Apache Mina SSHD, um eine SSH-Verbindung in Java zu erstellen

Die Apache Mina SSHD ist eine weitere Bibliothek, um eine Verbindung mit einem Server über die SSH-Protokolle herzustellen. Auch diese Bibliothek ist in reinem Java geschrieben, und die Bibliothek basiert hauptsächlich auf Apache MINA.

Unser Beispiel unten erstellt eine einfache SSH-Verbindung mit der Apache Mina SSHD.

Beispielcode:

// Importing necessary packages
import java.net.InetSocketAddress;
import java.nio.charset.Charset;
import org.apache.mina.example.reverser.ReverseProtocolHandler;
import org.apache.mina.filter.codec.ProtocolCodecFilter;
import org.apache.mina.filter.codec.textline.TextLineCodecFactory;
import org.apache.mina.filter.logging.LoggingFilter;
import org.apache.mina.transport.socket.nio.NioSocketAcceptor;

public class JavaSSHD {
  // Specifying the PORT
  private static final int PORT = 8080;

  public static void main(String[] args) throws Exception {
    // Creating an acceptor object
    NioSocketAcceptor TheAcceptor = new NioSocketAcceptor();
    // Preparing the configuration
    TheAcceptor.getFilterChain().addLast("logger", new LoggingFilter());
    TheAcceptor.getFilterChain().addLast(
        "codec", new ProtocolCodecFilter(new TextLineCodecFactory(Charset.forName("UTF-8"))));

    // Binding all necessary things
    TheAcceptor.setHandler(new ReverseProtocolHandler());
    TheAcceptor.bind(new InetSocketAddress(PORT));
    System.out.println("Listening on port " + PORT);
  }
}

Das oben geteilte Beispiel veranschaulicht eine grundlegende Ebene eines Serverprogramms, das eine Liste des Ports bereitstellt. Wenn Sie den oben freigegebenen Beispielcode ausführen, erhalten Sie die folgende Ausgabe in Ihrer Konsole.

Ausgang:

Listening on port 8080
MD Aminul Islam avatar MD Aminul Islam avatar

Aminul Is an Expert Technical Writer and Full-Stack Developer. He has hands-on working experience on numerous Developer Platforms and SAAS startups. He is highly skilled in numerous Programming languages and Frameworks. He can write professional technical articles like Reviews, Programming, Documentation, SOP, User manual, Whitepaper, etc.

LinkedIn