2016-12-07 4 views
0

Mit jsch rufe ich addIdentity() an, um einen privaten Schlüssel hinzuzufügen, und getSession(), um einen SSH-Tunnel zu öffnen.ungültiger privater Schlüssel beim Öffnen des SSH-Tunnels mit JSCH

Wenn dieser Code lokal auf meiner Windows-Maschine ausgeführt wird, funktioniert die Öffnung des Tunnels.

jedoch beim Laufen, dass gleicher Code mit dem gleichen privaten Schlüssel auf unserer CI der folgende Fehler auftritt:

2016-12-07 01:01:32 ERROR SSHConnector:25 - invalid privatekey: [[email protected] 
com.jcraft.jsch.JSchException: invalid privatekey: [[email protected] 
    at com.jcraft.jsch.KeyPair.load(KeyPair.java:747) 
    at com.jcraft.jsch.KeyPair.load(KeyPair.java:561) 
    at com.jcraft.jsch.IdentityFile.newInstance(IdentityFile.java:40) 
    at com.jcraft.jsch.JSch.addIdentity(JSch.java:408) 
    at com.jcraft.jsch.JSch.addIdentity(JSch.java:389) 

Der private Schlüssel etwas wie folgt aussieht:

PuTTY-User-Key-File-2: ssh-rsa 
Encryption: none 
Comment: imported-openssh-key 
Public-Lines: 6 
XXXXXXXXXXXXXXXXXXX 
Private-Lines: 14 
XXXXXXXXXXXXXXXXXX 
Private-MAC: XXXXXXXXXXXXXXXX 

Was der Fehler sein könnte Hier?

Antwort

0

Meine Vermutung ist, dass jSCh nicht PuTTY Schlüsselformat unterstützt, sondern eher Standard PEM oder OpenSSH-Format. Sie können die PPK in PuTTYgen in PEM konvertieren und es sollte Ihre Probleme lösen.

+1

Mindestens in 0.1.53 (und ich bezweifle, dass das entfernt würde) liest es PPK (zusätzlich zu OpenSSL PEMs = nicht-newfmt OpenSSH und einige andere) aber ** nur mit Windows-Typ EOL ** (CR LF). Harold: Haben Sie Ihre PPK mit einer Methode, die EOLs wie Einfügen in einen Editor oder FTP TYPE A ändern kann, in das betroffene System kopiert? –

+0

jsch unterstützt zwar PPK-Dateien, aber da @dave_thompson_085 darauf hinweist, müssen die Zeilenenden mit CRLF markiert sein. Dave, bitte wandle deinen Kommentar in eine Antwort um, damit ich sie als richtig markieren kann. –

Verwandte Themen