2011-09-28 7 views

답변

2

우리는 overthere framework을 SSHJ 위에 구축했습니다. 연결 가능한 키 파일을 사용하여 연결할 수도 있습니다. 다음 코드 조각은 작동하지만 classpath에 bouncycastle 라이브러리를 추가해야합니다.

SSHClient client = new SSHClient(); 
String username = "johndoe"; 
File privateKey = new File("~/.ssh/id_rsa"); 
KeyProvider keys = client.loadKeys(privateKey.getPath()); 
client.authPublicKey(username, keys); 

희망이 있습니다.

+0

안녕, 응답에 대한 감사합니다! 이게 당신의 코드인가요? 내가 그것을 코드하려고 SSHClient.loadKeys가 인수로 파일을 수락하지 않는 오류가있어 http://schmizz.net/sshj/javadoc/0.5.0/net/schmizz/sshj/SSHClient에 따르면. html이 맞습니다. 나는 이전에로드 키즈를 사용할 문자열을 제공하려고 시도했지만 아무 소용이 없습니다. 내가 당신의 코드를 잘못 읽었습니까? – Obiphil

+0

getPath()를 추가하는 것을 잊었습니다. 간결한 답변을 제공하기 위해 상당량의 프레임 워크 코드를 제거했습니다.) –

+0

아아, 본질적으로 내가 한 일이며 작동하지 않습니다. 지금 SSHJ를 포기했습니다. 대신 JSch를 사용하십시오. 동등한 기능을 제공하는 것으로 보이지만 실제로 작동 할 수 있습니다. 당신의 도움을 주셔서 감사합니다! – Obiphil

-1

그것은 나를 위해 작동 :

try (final SSHClient sshClient = new SSHClient()) { 
    sshClient.addHostKeyVerifier(new PromiscuousVerifier()); 
     KeyProvider keys = sshClient.loadKeys("path_to_private_key.ppk"); 
     sshClient.connect("hostname"); 
     sshClient.authPublickey("username", keys); 
} catch (IOException e) { 
} 
+0

예외를 삭제하는 것은 나쁜 습관입니다. – Kenster

+0

귀하의 답변은 6 년 반 전에 선택한 답변과 매우 유사합니다. 당신은 현재의 질문에 더 많은 시간을 할애하여 실제로 사람들을 도울 것입니다! 다음 번에 행운을 빕니다 – GalAbra

+0

그 유용한 답변. –