Zugriff: http://www.cleondris.ch/en/opensource-ssh2.php
Sachverhalt:
Ganymed SSH-2 für Java ist eine Bibliothek, die das SSH-2-Protokoll in reinem Java implementiert (getestet auf J2SE 1.4.2 und 5.0). Es ermöglicht die Verbindung zu SSH-Servern aus Java-Programmen heraus. Es unterstützt SSH-Sitzungen (Remote-Befehlsausführung und Shell-Zugriff), lokale und Remote-Port-Weiterleitung, lokale Stream-Weiterleitung, X11-Weiterleitung, SCP und SFTP. Es bestehen keine Abhängigkeiten von einem JCE-Anbieter, da alle Krypto-Funktionalitäten enthalten sind.
程序:
复制代码代码如下:
@Prüfen
public void testSsh() {
String hostname = "192.168.0.1";
String username = „root“;
String-Passwort = „Passwort“;
versuchen {
/* Eine Verbindungsinstanz erstellen */
Verbindung conn = neue Verbindung(Hostname);
/* Jetzt verbinden */
conn.connect();
System.out.println("connect ok");
/*
* Authentifizieren. Wenn Sie eine IOException erhalten, die etwa Folgendes sagt:
* „Das Passwort für die Authentifizierungsmethode wird derzeit vom Server nicht unterstützt.“
* Dann schauen Sie bitte in den FAQ nach.
*/
boolean isAuthenticated = conn.authenticateWithPassword(username,password);
if (isAuthenticated == false)
throw new IOException("Authentifizierung fehlgeschlagen.");
System.out.println("Authentifizierung ok");
/* Eine Sitzung erstellen */
Sitzungssitzung = conn.openSession();
sess.execCommand("uname -a");
System.out.println("Hier sind einige Informationen zum Remote-Host:");
/*
* Dieses einfache Beispiel verarbeitet stderr nicht, was manchmal der Fall ist
* gefährlich (bitte lesen Sie die FAQ).
*/
InputStream stdout = new StreamGobbler(sess.getStdout());
BufferedReader br = new BufferedReader(new InputStreamReader(stdout));
while (wahr) {
String line = br.readLine();
if (Zeile == null)
brechen;
System.out.println(line);
}
/* Exit-Status anzeigen, falls verfügbar (sonst „null“) */
System.out.println("ExitCode: " + sess.getExitStatus());
/* Diese Sitzung schließen */
sess.close();
/* Verbindung schließen */
conn.close();
} Catch (IOException e) {
e.printStackTrace(System.err);
System.exit(2);
}
}
运行结果:
复制代码代码如下:
Verbindung ok
Authentifizierung ok
Hier einige Informationen zum Remote-Host:
Linux localhost.localdomain 2.6.22 #1 SMP Mi 13. August 11:24:59 CST 2008 i686 i686 i386 GNU/Linux
ExitCode: 0