将私钥作为字符串的Java SFTP客户端

时间:2015-08-11 01:04:54

标签: java ftp sftp private-key

Apache Commons和JSch都需要私钥文件来建立SFTP连接。我正在处理的项目将用于连接多个SFTP服务器。因此,我们不希望部署多个私钥文件,而是将这些密钥保存为加密配置文件中的字符串。是否存在不需要私钥文件对象的SFTP库?

1 个答案:

答案 0 :(得分:1)

JSch有一个addIdentity method overload从缓冲区获取密钥:

public class JSch {
    ...
    public void addIdentity(String name, byte[]prvkey, byte[]pubkey, byte[] passphrase) throws JSchException{

备选方案:

还有addIdentity overload that takes an Identity interface

public class JSch {
    ...
    public void addIdentity(Identity identity, byte[] passphrase)

只需实现界面即可从您需要的任何地方获取私钥。

有关示例实现,请参阅IdentityFile

或者,将所有密钥存储到IdentityRepository

public interface IdentityRepository {
    ...
    public boolean add(byte[] identity);
public class JSch {
    ...
    public synchronized IdentityRepository getIdentityRepository()