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

标签 java ssh sftp jsch private-key

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

最佳答案

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

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了解缓冲区中 key 的格式。


替代方案:

还有一个addIdentity overload that takes an Identity interface :

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

只需实现接口(interface)即可从您需要的任何地方获取私钥。

有关示例实现,请参阅 IdentityFile


或者,将所有 key 存储到 IdentityRepository .

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

关于将私钥作为字符串的 Java SFTP 客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31931574/

相关文章:

java - 并行运行多个 JPA 事务

windows - 使用 SSH 的 TortoiseSVN

git - 无法在 Github 上为 pip install git+ssh 指定 key 文件

ubuntu - 使用 SFTP 将文件从本地计算机传输到远程计算机

java - 未捕获的异常处理程序 - UiAutomator

java - 如何从驱动程序访问复制构造函数

java - Android Studio 不兼容的类型需要 java.lang.String 找到 java.lang.String

关闭终端时 Bash 脚本无法正常运行

支持 ssh-dss 公钥算法的 Python FTP 实用程序

linux - 如果文件部分上传,sftp(在 unix 中)会返回什么错误?