2016-03-29 19 views
2

シナリオでは、SFTPファイル転送を行うアプリケーション用のテストを書く必要があります。秘密鍵認証を実装したメモリ/組み込みSFTPサーバーにが必要です私は、ファイル転送がプライベートキー(.pem)ファイル認証で埋め込み/メモリサーバーで正常に動作することをテストできます。私はプライベート実装する方法を見つけることを試みたJavaで秘密鍵認証をテストするメモリ/内蔵SFTPサーバー

SshServer sshd = SshServer.setUpDefaultServer(); 
sshd.setPort(22999); 

sshd.setKeyPairProvider(new SimpleGeneratorHostKeyProvider()); 
sshd.setPasswordAuthenticator(new PasswordAuthenticator() { 

    public boolean authenticate(String username, String password, 
           ServerSession session) { 
     // TODO Auto-generated method stub 
     return true; 
    } 
}); 

は、私が最も近いインターネットの根性を通じて掻き集めてきた私はApache Mina Server as discussed in this S.O. question

は現在、私は以下のようにユーザー名とパスワード認証を使用していたようになりました鍵認証唯一のオーセンティケータがあるようだが、それは以下のように公開鍵認証システムである:

public void setPublickeyAuthenticator(PublickeyAuthenticator publickeyAuthenticator) { 
    this.publickeyAuthenticator = publickeyAuthenticator; 
} 

は番目ですApache Minaで秘密鍵オーセンティケータを実装する方法はありますか?それが不可能な場合は、私のテストシナリオに使用できる他の模擬SFTPサーバがありますか?

答えて

1

公開鍵オーセンティケータを実際に探しています。

クライアント/ユーザは、その公開鍵で認証されます。サーバーは秘密鍵を決して見ません。


だから、authenticate methodPublicKey key引数はあなたが認証するために、あなたのクライアントで使用している鍵ペアの公開部分と一致するかどうかを確認するPublickeyAuthenticator interfaceを実装します。

OpenSSH .ssh/authorized_keysのような設定ファイルを使用するAuthorizedKeysAuthenticator implementationから開始できます。

+0

「プライベートキー」を使用してjschログインを使用でき、対応する公開キーをサーバーの既知のキーに追加すると、そのトリックが実行されます。 – Anirudh

+0

クライアントは公開キーIMO – Anirudh

+0

ではなく「秘密キー」で認証します。認証の反対側には公開キーのみが表示されます。したがって、クライアント側では、サーバーのキーペアのパブリック部分(ホストキーと呼ばれます)が表示されます。サーバー側では、サーバーはユーザーのキーペアのパブリック部分のみを表示します。もちろん、ユーザーには秘密鍵も必要ですが、秘密鍵がサーバーに送信されないため、サーバー上の秘密鍵を確認することはできません。 –