公開鍵認証を使用してサーバーに接続するために、ganymedSSH2javaライブラリを使用しています。公開鍵と秘密鍵のペアを作成し、公開鍵(mykey.pub)をサーバーの/.ssh2ディレクトリにアップロードしました。私は自分のマシンに秘密鍵をローカルに持っています。
キーに関する情報:2048ビットのdsaキーペア(ssh2)
私はこのようなことをしています:
File keyfile = new File("C:\\keys\\mykey");
String keyfilePass = "a"; // will be ignored if not needed
try
{
Connection conn = new Connection(hostname);
conn.connect();
boolean isAuthenticated = conn.authenticateWithPublicKey("myusername", keyfile, keyfilePass);
//I get an error at this line
私が得ているエラーは次のとおりです。
Caused by: java.io.IOException: Invalid PEM structure, '-----BEGIN...' missing
at ch.ethz.ssh2.crypto.PEMDecoder.parsePEM(PEMDecoder.java:138)
誰か助けてもらえますか?これよりもうまく機能するライブラリは他にありますか?
編集:キーファイル
---- BEGIN SSH2 ENCRYPTED PRIVATE KEY ----
Subject: username Comment: "2048-bit dsa, username@host, Tue Jul 31 2012 13:12:48 -\
0500"
KEY
---- END SSH2 ENCRYPTED PRIVATE KEY ----
解決:
私は問題を理解しました。キーをOPENSSH形式に変換する必要がありました(そのためにputtygenを使用しました)。このJavaライブラリは、openssh形式の秘密鍵のみを受け入れます。