随机
Enter 搜索 ↑↓ 切换 Esc 清空

fnos-sftp-fix

命令

FnOS SFTP 连接失败修复方案

fnos-sftp-fix

FnOS SFTP 连接失败修复方案

补充说明

飞牛 FnOS 系统默认开启 SSH 服务、22 端口正常监听,但 SFTP 无法连接,报错 Received message too long。本文提供完整排查与修复流程。

一、问题现象

SFTP 连接失败,本地自测报错:

Received message too long 458961717
Ensure the remote shell produces no output for non-interactive sessions.

常规 SSH 可连,但 WinSCP / FileZilla 等工具 SFTP 连接失败,是 FnOS 系统专属通病

二、核心报错原因

  1. FnOS 为 root 用户内置了开机 LOGO、欢迎标语、系统输出脚本
  2. SFTP 属于纯二进制协议,不允许终端输出任何文字信息
  3. 登录弹窗标语污染了 SFTP 握手数据流,导致协议解析失败、直接断开连接
  4. 非端口、防火墙、SSH 服务故障,纯系统环境输出干扰问题

三、前期环境校验

校验 SFTP 配置文件

cat /etc/ssh/sshd_config | grep sftp

正常输出(标准合法配置):

Subsystem  sftp         /usr/lib/openssh/sftp-server

校验 22 端口监听状态

ss -tulpn | grep :22

正常结果(证明 SSH 服务正常运行):

tcp   LISTEN 0      128      0.0.0.0:22       0.0.0.0:*    users:(("sshd",pid=3301352,fd=3))
tcp   LISTEN 0      128         [::]:22          [::]:*    users:(("sshd",pid=3301352,fd=4))

四、完整修复流程

步骤1:开启 Root SSH 登录权限

sed -i 's/PermitRootLogin no/PermitRootLogin yes/' /etc/ssh/sshd_config
sed -i 's/#PermitRootLogin/PermitRootLogin/' /etc/ssh/sshd_config

步骤2:关闭 SSH 严格权限校验

echo "StrictModes no" >> /etc/ssh/sshd_config

步骤3:清理干扰 SFTP 的终端欢迎输出(核心修复)

sed -i '/mesg n/d' /root/.profile
sed -i '/POWERED BY FNOS/d' /root/.profile
sed -i '/echo/d' /root/.profile
echo "" > /root/.bashrc

步骤4:重启 SSH 服务生效

systemctl restart sshd

五、验证修复

执行本地 SFTP 连接测试:

sftp root@127.0.0.1

输入 root 密码,出现以下内容即为修复成功:

Connected to 127.0.0.1.
sftp>

六、客户端连接参数

适配 WinSCP / FileZilla / Xshell 等所有 SFTP 工具:

参数
协议 SFTP(SSH 文件传输协议)
主机/IP FnOS 内网 IP 地址
端口 22
用户名 root
密码 FnOS 系统 root 登录密码

七、总结

  1. SFTP 报错 Received message too long 是 FnOS 专属坑,非配置、端口、服务故障
  2. 根本原因:系统登录欢迎标语、终端输出污染 SFTP 二进制协议
  3. 修复核心:清空 root 用户下 .bashrc.profile 所有打印输出
  4. 修复后永久生效,重启系统、重启 SSH 均不会复发