【问题标题】:Authentication using a key encrypted with a passphrase in JSch使用 JSch 中的密码加密的密钥进行身份验证
【发布时间】:2022-12-16 16:59:20
【问题描述】:

我想使用 JSch 打开 SFTP 连接来下载一些文件。

String SFTPPRIVATEKEY = "/folder/privatekeyfile";
String SFTPUSER = "user";
String SFTPPASS = "";
String SFTPHOST = "server.tld";
String SFTPPORT = "22";
int usePrivateKey = 1;

public boolean connect() {
    boolean isConnected = false;
    try {
        JSch jsch = new JSch();
        
        if (usePrivateKey) {
            jsch.addIdentity(SFTPPRIVATEKEY);
        }
        
        session = jsch.getSession(SFTPUSER,SFTPHOST,SFTPPORT);
        if (!usePrivateKey) {
            session.setPassword(SFTPPASS);
        }
        
        java.util.Properties config = new java.util.Properties();
        config.put("StrictHostKeyChecking", "no"); 
        session.setConfig(config);
        session.connect();
        if (session.isConnected() == true) {
            log.println("Connection to Session server is successfully");
        }
        channel = session.openChannel("sftp");
        channel.connect();
        channelSftp = (ChannelSftp)channel;
        isConnected = true;
    } catch (JSchException e) {
        log.println("SFTPClient Connect ERROR: "+e.getMessage());
        e.printStackTrace();
        
    }
    return isConnected;
}

如果我运行我的代码,我会得到:

com.jcraft.jsch.JSchException: USERAUTH 失败

我尝试在运行我的 Java 代码的同一客户端上的 shell 上使用 sftp 进行连接。我跑

sftp -i privatekeyfile user@server.tld

它提示输入私钥文件的密码。我输入了密码,连接效果很好。

但是JSch没有连接。我找不到在 JSch 中设置密码的选项。也许这是问题所在?

你们能帮忙吗?
谢谢

【问题讨论】:

  • .ppk 后缀通常用于 PuTTY 定义的 PPK 格式的文件(PPK = PuTTY 私钥),但包括 sftp 在内的 OpenSSH 不支持这些格式,因此您的文件实际上必须是其他格式,可能是Jsch 不支持。查看文件的第一行或第二行以确定它实际是什么格式。

标签: java ssh sftp jsch


【解决方案1】:

JSch.addIdentity 重载了密码:

public void addIdentity(String prvkey, String passphrase)

强制性警告:不要使用StrictHostKeyChecking=no 盲目接受所有主机密钥。这是一个安全漏洞。你失去了对MITM attacks的保护。有关正确(和安全)的方法,请参阅:How to resolve Java UnknownHostKey, while using JSch SFTP library?

【讨论】:

    猜你喜欢
    • 2015-12-07
    • 2015-05-04
    • 1970-01-01
    • 2014-05-30
    • 2015-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多