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

Java SFTP client that takes private key as a string

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

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

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

有关实施示例,请参阅 JSch: addIdentity from private key stored on hdfs

另请参阅 了解缓冲区中密钥的格式。


备选方案:

还有一个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()