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()
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()