【发布时间】:2015-11-03 01:50:35
【问题描述】:
Apache Commons 和 JSch 都需要一个私钥文件来建立 SFTP 连接。我正在进行的项目将用于连接到多个 SFTP 服务器。因此,我们不希望部署多个私钥文件,而是将这些密钥作为字符串保存在加密的配置文件中。是否有不需要文件对象作为私钥的 SFTP 库?
【问题讨论】:
标签: java ssh sftp jsch private-key
Apache Commons 和 JSch 都需要一个私钥文件来建立 SFTP 连接。我正在进行的项目将用于连接到多个 SFTP 服务器。因此,我们不希望部署多个私钥文件,而是将这些密钥作为字符串保存在加密的配置文件中。是否有不需要文件对象作为私钥的 SFTP 库?
【问题讨论】:
标签: java ssh sftp jsch private-key
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。
另请参阅Loading private key from string or resource in Java JSch in Android app,了解缓冲区中密钥的格式。
替代方案:
还有一个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()
【讨论】: