[Non résolu] Une exception se produit lorsqu'une connexion SSH est exécutée à l'aide de JSch à partir d'une application Java 6.

Chose que tu veux faire

Connexion SSH à une autre machine à partir d'une application créée par vous-même compilée avec Java6.

environnement

point d'accès

client

Résumé du problème

Si vous appelez l'API de JSch et établissez une connexion SSH à une autre machine, vous la trouverez dans JSch. Lèvera une exception.

Détails du problème

Java 6 maintenant? Vous pourriez penser cela, mais il y avait des circonstances où je devais l'utiliser.

Quand il s'agit de connexion SSH en Java, il semble que la bibliothèque JSch de JCraft soit souvent utilisée. .. Il est enregistré dans le Mevan Repository et peut également être téléchargé à partir du site JCraft. Je vais.

C'est pourquoi j'ai immédiatement essayé de l'utiliser. Le code ressemble simplement à ceci:

MainClass.java


package sample.sshconnect;

import com.jcraft.jsch.JSch;
import com.jcraft.jsch.JSchException;
import com.jcraft.jsch.Session;

public class MainClass {

	private static final String USER = "user_sample";
	private static final String HOST = "111.222.333.444";
	private static final String PASSWORD = "password_sample";
	private static final int PORT = 22;

	public static void main(String[] args) {
		//Connexion et déconnexion au serveur
		JSch jsch = new JSch();
		Session session = null;
		try {
			session = jsch.getSession(USER, HOST, PORT);
		} catch (JSchException e) {
			e.printStackTrace();
			return;
		}
		session.setConfig("StrictHostKeyChecking", "no");
		session.setPassword(PASSWORD);
		try {
			session.connect();
		} catch (JSchException e) {
			e.printStackTrace();
			return;
		}
		session.disconnect();
	}
}

Dans pom.xml, spécifiez 1.6 pour maven-compiler-plugin.

pom.xml


<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>SampleSshConnect</groupId>
  <artifactId>SampleSshConnect</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <build>
    <sourceDirectory>src</sourceDirectory>
    <plugins>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.7.0</version>
        <configuration>
          <source>1.6</source>
          <target>1.6</target>
        </configuration>
      </plugin>
    </plugins>
  </build>
  <dependencies>
    <dependency>
      <groupId>com.jcraft</groupId>
      <artifactId>jsch</artifactId>
      <version>0.1.55</version>
    </dependency>
  </dependencies>
</project>

Lorsque je l'exécute, les informations suivantes sont envoyées à la console.

com.jcraft.jsch.JSchException: Session.connect: java.io.IOException: End of IO Stream Read
	at com.jcraft.jsch.Session.connect(Session.java:565)
	at com.jcraft.jsch.Session.connect(Session.java:183)
	at sample.sshconnect.MainClass.main(MainClass.java:27)

Apparemment, il y a une exception dans session.connect ();.

Donc, modifiez pom.xml pour changer la version spécifiée dans maven-compiler-plugin en 1.7.

pom.xml


<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>SampleSshConnect</groupId>
  <artifactId>SampleSshConnect</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <build>
    <sourceDirectory>src</sourceDirectory>
    <plugins>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.7.0</version>
        <configuration>
          <source>1.7</source>
          <target>1.7</target>
        </configuration>
      </plugin>
    </plugins>
  </build>
  <dependencies>
    <dependency>
      <groupId>com.jcraft</groupId>
      <artifactId>jsch</artifactId>
      <version>0.1.55</version>
    </dependency>
  </dependencies>
</project>

Lorsque je l'exécute, rien ne s'affiche sur la console.

Cela signifie que lorsque vous compilez avec Java 7, la connexion SSH sera réussie et Si vous compilez avec Java6, vous obtiendrez une exception lors de la connexion à SSH.

Solution

Aucun moyen d'éviter l'exception n'a encore été trouvé. Je me demande si quelque chose peut être fait.

Recommended Posts

[Non résolu] Une exception se produit lorsqu'une connexion SSH est exécutée à l'aide de JSch à partir d'une application Java 6.
Le chemin du fichier n'est pas reconnu lors de l'exécution d'une commande externe à partir d'une application Java
Connexion SSH à l'aide de SSHJ à partir de l'application Java 6
Lors de l'utilisation d'une liste en Java, java.awt.List sort et une erreur se produit
Lorsque vous utilisez ExpandableListView avec un fragment, une exception se produit lorsque l'héritage est ListFragment.
Collecte des informations client lorsqu'une erreur se produit dans une application Web
Accéder à Teradata depuis une application Java
Exception inattendue lors de l'utilisation de DateTimeFormatter de Java
Java Exception StackTrace est déterminé lorsque nouveau
Un rappel lorsqu'une erreur aapt.exe se produit
Correspond à une propriété dont le type devient un tableau lorsqu'il est vide à l'aide de JsonDeserializer
Créons une application TODO avec Java 12 Processing lorsqu'une requête arrive avec une HttpMethod inutilisée ・ Traitement lorsqu'une erreur se produit sur le serveur
Connectez-vous à Aurora (MySQL) depuis une application Java
Établir une connexion ssh depuis Mac / VirtualBox (CentOS)
[Java] Récupère des valeurs de manière aléatoire dans un tableau
Je souhaite établir une connexion lorsqu'une base de données est créée à l'aide de Spring et MyBatis
Créons une application TODO en Java 11 Gestion des exceptions lors de l'accès à un TODO avec un ID inexistant