在 CentOS 上使用 SFTP 出现乱码,通常是字符编码不一致导致的(服务端/客户端编码不同,常见于中文文件名)。下面按常见场景给出解决方案。
locale
echo $LANG
如果看到:
LANG=
LC_CTYPE="POSIX"
或不是 UTF-8,就很可能乱码。
localectl set-locale LANG=zh_CN.UTF-8
或临时:
export LANG=zh_CN.UTF-8
export LC_ALL=zh_CN.UTF-8
如果没有
zh_CN.UTF-8:
localedef -i zh_CN -f UTF-8 zh_CN.UTF-8
确保终端是 UTF-8:
echo $LANG
终端(如 SecureCRT、Xshell)也要设置 UTF-8。
编辑:
vi /etc/ssh/sshd_config
确保有以下内容:
AcceptEnv LANG LC_*
然后:
systemctl restart sshd
注意:SFTP ≠ FTP
如果是 vsftpd:
vi /etc/vsftpd/vsftpd.conf
添加:
utf8_filesystem=YES
file 文件名
yum install convmv -y
convmv -f GBK -t UTF-8 --notest 文件名
LANG=zh_CN.UTF-8AcceptEnv LANG如果你能告诉我:
cat /etc/redhat-release)我可以给你更精确的方案。