2017-03-14 16 views
0

ssh-keygenを使用して生成されたRSA公開鍵です。公開鍵を持つsftpが動作していません

SFTPを介してリモートサーバーを接続するために使用しようとすると:

JSch jsch = new JSch(); 
     try { 

      String publicKey = "/home/testuser/.ssh/id_rsa.pub"; 
      jsch.addIdentity(publicKey); 
      session = jsch.getSession(sftpUsername, sftpHostname, sftpPort); 
      session.setConfig("PreferredAuthentications", "publickey,keyboard-interactive,password"); 
     } catch (JSchException e) { 
      logger.error("Unable to obtain session", e); 
     } 

は、エラーの下になって:

com.jcraft.jsch.JSchException: invalid privatekey: /home/testuser/.ssh/id_rsa.pub 
     at com.jcraft.jsch.IdentityFile.<init>(IdentityFile.java:261) 
     at com.jcraft.jsch.IdentityFile.newInstance(IdentityFile.java:135) 
     at com.jcraft.jsch.IdentityFile.newInstance(IdentityFile.java:130) 
     at com.jcraft.jsch.JSch.addIdentity(JSch.java:206) 
     at com.jcraft.jsch.JSch.addIdentity(JSch.java:192) 

任意の提案を?

答えて

2

あなたが持っている:

jsch.addIdentity(publicKey); 

JSCHのJavadocは言う:

public void addIdentity(String prvkey) throws JSchException;

は、公開鍵認証に使用するIDを追加します。 identityRepositoryに登録する前に、パスフレーズで解読されます。

パラメータ:

  • prvkey - 秘密鍵ファイルのファイル名。これは、キーの識別名としても使用されます。対応する公開鍵は、接尾辞.pubを持つ同じ名前のファイル内にあるものとみなされます。

JSchが秘密鍵を要求しているときに公開鍵を提供しました。

これについて考えると、これは意味があります。公開鍵については何も秘密がありません。 JSchは秘密を求めているので、あなたが誰であるかを証明することができます。

秘密鍵はおそらく~/.ssh/id_rsa.pub拡張子なし)です。

秘密鍵を復号化するパスフレーズを入力するには、2つのパラメータのバージョンaddIdentityを使用する必要があります。

関連する問題