2011-09-28 82 views

回答

2

我们在SSHJ之上构建了overthere framework。哪些连接也可以使用密钥文件进行连接。 下面的一段代码应该可以工作,但要确保将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是正确的。我以前尝试提供位置作为字符串loadKeys,无济于事。我误读你的代码吗? – 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

其有用的答案。 –