Crear conexión SSH en Java

MD Aminul Islam 12 octubre 2023
Crear conexión SSH en Java

El SSH, también conocido como Secure Shell o Secure Socket Shell, es un protocolo de red que nos permite conectarnos a través de una conexión segura a otro ordenador.

El tutorial de hoy analiza cómo abrir una conexión SSH y demuestra el uso de JSch y Apache Mina SSHD para crear una conexión SSH.

Crear conexión SSH en Java

Hay varias formas, pero usar JSch y Apache Mina SSHD son las más comunes, así que vamos a aprenderlas una por una.

Método 1: use JSch para crear una conexión SSH en Java

JSch es una implementación de SSH2 escrita en Java puro. Esta biblioteca le permite conectarse a un servidor SSHD. También le permite usar el reenvío X11, el reenvío de “puertos”, la transferencia de archivos y más.

Nuestro ejemplo a continuación creará una conexión SSH simple utilizando JSch.

Código de ejemplo:

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

Producción :

Successfully Connected !!!

Método 2: use Apache Mina SSHD para crear una conexión SSH en Java

El Apache Mina SSHD es otra biblioteca para crear una conexión con un servidor utilizando los protocolos SSH. Esta biblioteca también está escrita en Java puro, y la biblioteca se basa principalmente en Apache MINA.

Nuestro ejemplo a continuación creará una conexión SSH simple utilizando Apache Mina SSHD.

Código de ejemplo:

// 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);
  }
}

El ejemplo compartido anteriormente ilustra un nivel básico de un programa de servidor que proporciona una lista del puerto. Cuando ejecute el código de ejemplo compartido anteriormente, obtendrá el siguiente resultado en su consola.

Producción :

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