SSH-Verbindung mit SSHJ aus der Java6-App

Was du machen willst

Es wird eine SSH-Verbindung von Ihrer eigenen mit Java 6 kompilierten Anwendung zu einem anderen Computer unter Verwendung der Bibliothek SSHJ hergestellt. Ich habe versucht, dies mit der Bibliothek JSch zu tun, aber dieser Artikel Wie ich in 86c9e9efb5358601b25b) geschrieben habe, funktioniert es nicht, daher versuche ich, es von der JSch-Bibliothek in die SSHJ-Bibliothek zu ändern.

Umgebung

Zugangspunkt

Klient

Beispielcode

Ich denke, dass Sie viele Beispiele finden können, die zum Zeitpunkt der SSH-Verbindung eine Kennwortauthentifizierung durchführen, aber es scheint, dass es nur wenige Beispiele gab, die eine Schlüsselauthentifizierung (mit Passphrase) durchführen. Daher werde ich den Beispielcode schreiben, der erfolgreich als Memorandum verbunden wurde. Ich werde.

Es reicht nicht aus, nur eine Verbindung zu SSH herzustellen, daher habe ich versucht, den Code dazu zu bringen, die Datei nach dem Herstellen einer Verbindung zu SSH herunterzuladen.

Großbuchstaben sind die Teile, die extern angegeben oder im Code definiert werden müssen. Auch die Ausnahmebehandlung wird viel übersprungen.

Sample.java


        SSHClient ssh = new SSHClient();
        ssh.addHostKeyVerifier(new PromiscuousVerifier());
        try {
            ssh.connect(HOST, PORT);
            ssh.authPublickey(USER, ssh.loadKeys(PRIVATEKEYFILEPATH, PASSPHRASE));
            ssh.newSCPFileTransfer().download(SRCDIR, new FileSystemFile(DSTDIR));
            ssh.disconnect();
            ssh.close();
        } catch (UserAuthException e) {
            e.printStackTrace();
        } catch (TransportException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

Vorsichtsmaßnahmen für die Schlüsselauthentifizierung

Die private Schlüsseldatei, die mit SSHJ verwendet werden kann, scheint eine Datei im PEM-Format zu sein.

Ich denke, dass die private Schlüsseldatei und die öffentliche Schlüsseldatei mit dem Befehl ssh-keygen erstellt werden, aber abhängig von der Version des verwendeten Befehls ssh-keygen wird die private Schlüsseldatei im folgenden Format standardmäßig generiert. .. Die Authentifizierung schlägt fehl, wenn diese private Schlüsseldatei mit der SSHJ-Bibliothek verwendet wird.

-----BEGIN RSA PRIVATE KEY-----
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
:
:
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-----END RSA PRIVATE KEY-----

Verwenden Sie zur Authentifizierung bei der SSHJ-Bibliothek eine private Schlüsseldatei im folgenden Format.

-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: AES-128-CBC,xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
:
:
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-----END RSA PRIVATE KEY-----

Geben Sie zum Generieren einer PEM-formatierten privaten Schlüsseldatei wie der oben genannten "-m PEM" als Option für den Befehl "ssh-keygen" an.

-- das ist alles --

Recommended Posts

SSH-Verbindung mit SSHJ aus der Java6-App
Stellen Sie mit Eclipse eine Verbindung von Java zu MySQL her
Stellen Sie über eine Java-Anwendung eine Verbindung zu Aurora (MySQL) her
Verwenden der Datenbank (SQL Server 2014) aus einem Java-Programm 2018/01/04
Stellen Sie eine Verbindung von Java zu PostgreSQL her
Verwenden von Docker von Java Gradle
Machen Sie einen Diamanten mit Java
[Nicht gelöst] Eine Ausnahme tritt auf, wenn eine SSH-Verbindung mit JSch aus einer Java 6-App ausgeführt wird.
Ich habe eine shopify App @java erstellt
Laden Sie Dateien mit Java HttpURLConnection hoch
Greifen Sie über eine Java-Anwendung auf Teradata zu
Erstellen Sie ein Java-Projekt mit Eclipse
Beispielcode mit Minio aus Java
Versuchen Sie, Werte von Java Servlet mit JSON an die iPhone-App zu übergeben
Datenverarbeitung mit der Stream-API von Java 8
Versuchen Sie, Kubernetes Job von Java aus auszuführen
Erstellen Sie eine TODO-App in Java 7 Create Header
Lassen Sie uns eine Taschenrechner-App mit Java erstellen
Stellen Sie eine Java-Web-App für Heroku bereit
[Java] Generieren Sie mithilfe der Stream-API eine verengte Liste aus mehreren Listen
Wenn eine Person aus Java PHP lernt
[Java] Ich habe versucht, über den Verbindungspool eine Verbindung mit Servlet (Tomcat) & MySQL & Java herzustellen
Greifen Sie über Java mit Axis2 Enterprise WSDL auf Forec.com zu
GetInstance () aus einer @ Singleton-Klasse in Groovy aus Java
Um ein VB.net-Programmierer aus einem Java-Shop zu werden
Erstellen Sie eine Kotlin-App mit dem OpenJDK Docker-Container
Programmieranfänger lernen PHP aus einer Java-Perspektive.
Erstellen Sie Scala Seq aus Java, machen Sie Scala Seq zu einer Java-Liste
Versuchen Sie, mit JZOS von Java aus auf das Dataset zuzugreifen
[Java] Ruft Werte zufällig aus einem Array ab
Erstellen Sie eine Java-Entwicklungsumgebung mit jenv auf Ihrem Mac
[Java] [SQL Server] Stellen Sie mit JDBC für SQL Server eine Verbindung zum lokalen SQL Server 2017 her
Erstellen Sie ein Docker-Image, um eine einfache Java-App auszuführen
Geben Sie den Maximalwert eines Arrays mithilfe der Java-Standardausgabe aus
Studieren von Java8 (z. B. Lesen von Dateien mit Stream)
So springen Sie von Eclipse Java zu einer SQL-Datei
Rufen Sie eine Methode mit Kotlins Rückrufblock von Java aus auf
[Java] Textextraktion aus PowerPoint (ppt) mit Apache POI
Ich habe versucht, Log4j2 auf einem Java EE-Server zu verwenden
[Hinweis] Erstellen Sie mit Docker eine Java-Umgebung von Grund auf neu
So konvertieren Sie A in a und a in A mit logischem Produkt und Summe in Java
Ich habe einen Wrapper erstellt, der KNP von Java aus aufruft
Versuchen Sie, mit Docker eine Java-Entwicklungsumgebung zu erstellen
Ich habe versucht, ein Aktienchart mit Java (Jsoup) zu kratzen.