Connexion SSH à une autre machine à partir d'une application créée par vous-même compilée avec Java6.
Si vous appelez l'API de JSch et établissez une connexion SSH à une autre machine, vous la trouverez dans JSch. Lèvera une exception.
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.
Aucun moyen d'éviter l'exception n'a encore été trouvé. Je me demande si quelque chose peut être fait.