0

公開鍵認証を使用してサーバーに接続するために、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形式の秘密鍵のみを受け入れます。

4

2 に答える 2

2

ヘッダー「BEGINSSH2ENCRYPTEDPRIVATE KEY」は、秘密鍵がssh.comの独自のsshシステムによって生成されたことを意味します。

これよりもうまく機能するライブラリは他にありますか?

キーが暗号化されていない場合、JSchはそれを受け入れます。

于 2012-08-01T02:19:11.690 に答える
1

キーが期待どおりの形式ではないことがわかります。どのように生成しましたか?

于 2012-07-31T23:16:02.513 に答える