[Nicht gelöst] Eine Ausnahme tritt auf, wenn eine SSH-Verbindung mit JSch aus einer Java 6-App ausgeführt wird.

Was du machen willst

SSH-Verbindung zu einem anderen Computer über eine selbst erstellte Anwendung, die mit Java6 kompiliert wurde.

Umgebung

Zugangspunkt

Klient

Problemzusammenfassung

Wenn Sie die API von JSch aufrufen und eine SSH-Verbindung zu einem anderen Computer herstellen, finden Sie diese in JSch. Wird eine Ausnahme auslösen.

Problemdetails

Java 6 jetzt? Sie könnten das denken, aber es gab Umstände, unter denen ich es benutzen musste.

Wenn es um SSH-Verbindungen in Java geht, wird anscheinend häufig die Bibliothek JSch von JCraft verwendet. .. Es ist im Mevan Repository registriert und kann auch von der Website JCraft heruntergeladen werden. Ich werde.

Deshalb habe ich sofort versucht, es zu benutzen. Der Code sieht einfach so aus:

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) {
		//Verbindung zum Server herstellen und trennen
		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();
	}
}

Geben Sie in pom.xml`` 1.6 für maven-compiler-plugin an.

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>

Wenn ich es ausführe, werden die folgenden Informationen an die Konsole ausgegeben.

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)

Anscheinend gibt es eine Ausnahme in "session.connect ();".

Ändern Sie also pom.xml, um die im maven-compiler-plugin angegebene Version in 1.7 zu ändern.

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>

Wenn ich es starte, wird nichts auf der Konsole angezeigt.

Dies bedeutet, dass beim Kompilieren mit Java 7 die SSH-Verbindung erfolgreich ist und Wenn Sie mit Java6 kompilieren, wird beim Herstellen einer Verbindung zu SSH eine Ausnahme angezeigt.

Lösung

Es wurde noch keine Möglichkeit gefunden, die Ausnahme zu vermeiden. Ich frage mich, ob etwas getan werden kann.

Recommended Posts

[Nicht gelöst] Eine Ausnahme tritt auf, wenn eine SSH-Verbindung mit JSch aus einer Java 6-App ausgeführt wird.
Der Dateipfad wird nicht erkannt, wenn ein externer Befehl von einer Java-App ausgeführt wird
SSH-Verbindung mit SSHJ aus der Java6-App
Bei Verwendung einer Liste in Java wird java.awt.List ausgegeben und ein Fehler tritt auf
Bei Verwendung von ExpandableListView mit einem Fragment tritt eine Ausnahme auf, wenn die Vererbung ListFragment lautet.
Sammeln von Clientinformationen, wenn in einer Webanwendung ein Fehler auftritt
Greifen Sie über eine Java-Anwendung auf Teradata zu
Unerwartete Ausnahme bei Verwendung von DateTimeFormatter in Java
Java-Ausnahme StackTrace wird im Neuzustand ermittelt
Eine Erinnerung, wenn ein aapt.exe-Fehler auftritt
Entspricht einer Eigenschaft, deren Typ mit JsonDeserializer leer wird, wenn er leer ist
Erstellen wir eine TODO-Anwendung mit Java 12-Verarbeitung, wenn eine Anforderung mit einer nicht verwendeten HttpMethod eingeht. ・ Verarbeitung, wenn ein Fehler auf dem Server auftritt
Stellen Sie über eine Java-Anwendung eine Verbindung zu Aurora (MySQL) her
Stellen Sie eine SSH-Verbindung von Mac / VirtualBox (CentOS) her.
[Java] Ruft Werte zufällig aus einem Array ab
Ich möchte eine Verbindung herstellen, wenn eine Datenbank mit Spring und MyBatis erstellt wird
Erstellen wir eine TODO-Anwendung mit Java 11-Ausnahmebehandlung, wenn Sie mit einer nicht vorhandenen ID auf TODO zugreifen