2016-12-07 7 views
0

jsch 개인 키를 추가하려면 addIdentity()을, SSH 터널을 열려면 getSession()을 부릅니다.jsch로 SSH 터널을 열 때 유효하지 않은 개인 키

이 코드를 Windows 컴퓨터에서 로컬로 실행하면 터널 열기가 작동합니다.

그러나 우리의 CI에서 동일한 개인 키와 같은 코드는 다음과 같은 오류가 발생하는 것을 실행하는 경우 :

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

하는 것은 오류 일 수 있습니다 무엇 :

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) 

개인 키는 다음과 같이 보입니다 이리?

답변

0

내 생각에 jSCh는 PuTTY 키 형식이 아니라 표준 PEM 또는 OpenSSH 형식을 지원합니다. PuTTYgen에서 PPK를 PEM으로 변환하면 문제를 해결할 수 있습니다.

+1

적어도 0.1.53에서 (그리고 나는 이것이 제거 될 것 같지 않음) PPK (OpenSSL PEMs = non-newfmt OpenSSH 및 몇 가지 다른 것들) 이외에 ** 오직 Windows-type EOL ** (CR LF). 해롤드 : 편집자 나 FTP TYPE A에 붙여 넣기와 같은 EOL을 변경할 수있는 방법으로 영향을받는 시스템에 PPK를 복사 했습니까? –

+0

jsch는 실제로 PPK 파일을 지원하지만 @ dave_thompson_085는 CRLF로 표시된 줄 끝이 있어야한다고 지적했습니다. Dave, 의견을 대답으로 변환하여 올바른 것으로 틱 할 수 있습니다. –