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?
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? –
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. –