2011-09-28 84 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

其有用的答案。 –