Sftp访问方式JSch
发布日期:2021-05-08 09:45:26 浏览次数:19 分类:精选文章

本文共 1931 字,大约阅读时间需要 6 分钟。

JSch访问Sftp时的HostKey异常解决方案

在使用JSch库连接Sftp服务器时,可能会遇到HostKey异常的问题。这种异常通常是由于主机密钥验证失败引起的。以下是解决此问题的两种主要方法:

方法一:创建UserInfo实体类

  • 创建实现com.jcraft.jsch.UserInfo的实体类:确保该类存在一个无参的公共构造函数。
  • 实现必要的方法:覆盖getPassphrase()promptYesNo()等方法,以符合Sftp协议的要求。
  • 以下是一个示例实现:

    package sftp;
    import com.jcraft.jsch.UserInfo;
    public class SFtpUserInfo implements UserInfo {
    public SFtpUserInfo() {
    // 无需初始化内容
    }
    @Override
    public String getPassword() {
    return null;
    }
    @Override
    public boolean promptPassword(String arg0) {
    return false;
    }
    @Override
    public boolean promptPassphrase(String arg0) {
    return false;
    }
    @Override
    public boolean promptYesNo(String arg0) {
    return true;
    }
    @Override
    public void showMessage(String arg0) {
    // 显示信息
    }
    @Override
    public String getPassphrase() {
    return null;
    }
    }

    方法二:设置严格主机密钥检查为“否”

  • 创建配置实例:使用Properties配置文件。
  • 设置StrictHostKeyChecking为“否”:这将禁用主机密钥验证。
  • 以下是使用第二种方法的代码示例:

    package sftp;
    import java.util.Properties;
    import com.jcraft.jsch.Channel;
    import com.jcraft.jsch.ChannelSftp;
    import com.jcraft.jsch.JSch;
    import com.jcraft.jsch.Session;
    public class SftpClient {
    public static void main(String[] args) throws Exception {
    JSch js = new JSch();
    Session session = js.getSession("username", "ip地址", "端口");
    session.setPassword("密码");
    Properties config = new Properties();
    config.put("StrictHostKeyChecking", "no");
    session.setConfig(config);
    session.connect();
    Channel channel = session.openChannel("sftp");
    channel.connect();
    ChannelSftp cmd = (ChannelSftp) channel;
    // 执行Sftp命令
    cmd.get("remote文件路径", "本地文件路径");
    channel.disconnect();
    session.disconnect();
    }
    }

    注意事项

    • UserInfo类:确保其无参构造函数存在,并覆盖所有必要的方法。
    • 配置文件:在连接时设置StrictHostKeyChecking为“否”以禁用主机密钥检查。

    通过以上两种方法,可以有效解决JSch在Sftp连接时出现的HostKey异常问题。

    上一篇:HttpClient MultipartRequestEntity文件上传,中文乱码解决方案
    下一篇:MongoDB查询findAndModify

    发表评论

    最新留言

    很好
    [***.229.124.182]2025年03月28日 00时27分51秒