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.
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();
}
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