在 CentOS 上使用 SFTP 出现乱码,通常是字符编码不一致导致的(服务端/客户端编码不同,常见是 UTF-8 与 GBK 冲突)。下面按常见场景给你解决方案。
在 CentOS 上执行:
locale
如果看到类似:
LANG=zh_CN.GBK
或
LANG=
建议改为 UTF-8:
localectl set-locale LANG=zh_CN.UTF-8
或临时生效:
export LANG=zh_CN.UTF-8
export LC_ALL=zh_CN.UTF-8
⚠️ 修改后重新登录 SFTP 再试。
编辑:
vi /etc/ssh/sshd_config
确保没有强制非 UTF-8 编码,建议保留默认(不指定即可)。
重启 sshd:
systemctl restart sshd
sftp / PowerShellWindows 默认可能是 GBK。
✅ 解决:
FileZilla 设置:
站点管理 → 字符集 → 强制 UTF-8
确保客户端也是 UTF-8:
locale
不一致就会乱码。
如果文件已经以错误编码上传:
file filename
convmv -f gbk -t utf-8 --notest filename
安装:
yum install convmv
如果是 vsftpd:
vi /etc/vsftpd/vsftpd.conf
添加:
utf8_filesystem=YES
重启:
systemctl restart vsftpd
zh_CN.UTF-8如果你愿意,可以告诉我:
我可以直接给你精确配置。