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 系统专属通病。
二、核心报错原因
- FnOS 为 root 用户内置了开机 LOGO、欢迎标语、系统输出脚本
- SFTP 属于纯二进制协议,不允许终端输出任何文字信息
- 登录弹窗标语污染了 SFTP 握手数据流,导致协议解析失败、直接断开连接
- 非端口、防火墙、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 登录密码 |
七、总结
- SFTP 报错
Received message too long是 FnOS 专属坑,非配置、端口、服务故障 - 根本原因:系统登录欢迎标语、终端输出污染 SFTP 二进制协议
- 修复核心:清空 root 用户下
.bashrc、.profile所有打印输出 - 修复后永久生效,重启系统、重启 SSH 均不会复发