You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Apache MINA SSHD服务器连接失败:subsystem request failed on channel 0报错

解决Apache MINA SSHD SFTP连接时subsystem request failed on channel 0的问题

问题原因

出现该错误的核心原因是未在SSH服务器中注册SFTP子系统。SFTP作为SSH的专属文件传输子系统,你的当前代码仅配置了Shell和SCP支持,没有启用SFTP子系统,导致客户端发起SFTP子系统请求时,服务器无法识别并响应。

解决方案

需要在代码中添加SFTP子系统的配置,具体操作如下:

  1. 创建SftpSubsystemFactory实例,用于处理SFTP子系统的请求
  2. 将该工厂实例添加到SSH服务器的子系统工厂列表中

修改后的完整代码如下:

import org.apache.sshd.server.SshServer;
import org.apache.sshd.server.command.ScpCommandFactory;
import org.apache.sshd.server.keyprovider.SimpleGeneratorHostKeyProvider;
import org.apache.sshd.server.sftp.SftpSubsystemFactory;
import org.apache.sshd.server.shell.ProcessShellFactory;

import java.nio.file.Paths;
import java.util.Collections;

public class Main {
    public static void main(String[] args) {

        SshServer sshd = SshServer.setUpDefaultServer();
        sshd.setPort(22);
        sshd.setKeyPairProvider(new SimpleGeneratorHostKeyProvider(Paths.get("hostkey.ser")));

        sshd.setShellFactory(new ProcessShellFactory("/bin/sh", "-i", "-l"));
        sshd.setCommandFactory(new ScpCommandFactory());
        
        // 注册SFTP子系统
        SftpSubsystemFactory sftpFactory = new SftpSubsystemFactory();
        sshd.setSubsystemFactories(Collections.singletonList(sftpFactory));

        sshd.setPasswordAuthenticator(new MyPasswordAuthenticator());

        try {
            System.err.println("Starting SSHD on port 22");
            sshd.start();
            Thread.sleep(Long.MAX_VALUE);
            System.err.println("Exiting after a very (very very) long time");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

关键说明

  • SftpSubsystemFactory是Apache MINA SSHD专门为SFTP子系统提供的处理工厂,必须注册到服务器才能开启SFTP支持
  • 确保项目依赖中包含sshd-sftp模块(如使用Maven,需引入对应依赖),否则会出现SftpSubsystemFactory类找不到的问题

内容的提问来源于stack exchange,提问作者Jonny Marotte

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 02:15:34