CentOS 下 SSH 连接出现乱码,通常是字符编码不一致导致的(客户端、SSH、服务器 locale 不一致)。可以按下面顺序排查和解决。
常见乱码表现:
ls、cat 中文内容乱码vim、日志文件乱码locale
正常应看到类似:
LANG=en_US.UTF-8
LC_ALL=en_US.UTF-8
如果看到:
LANG=C
或没有 UTF-8,就会导致乱码。
编辑配置文件:
vim /etc/locale.conf
内容改为:
LANG=en_US.UTF-8
LC_ALL=en_US.UTF-8
或者中文环境:
LANG=zh_CN.UTF-8
LC_ALL=zh_CN.UTF-8
重新加载:
source /etc/locale.conf
或重新登录 SSH。
locale -a | grep zh_CN
locale -a | grep UTF-8
如果没有,安装:
yum install -y glibc-langpack-zh
✅ 设置方法:
Window
└─ Translation
└─ Remote character set → UTF-8
在 Windows 10+:
chcp 65001
grep -R SendEnv /etc/ssh/ssh_config
CentOS 默认:
SendEnv LANG LC_*
如被禁用,SSH 不会传递 UTF-8 环境变量。
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8
写入 ~/.bashrc 可永久生效:
echo 'export LANG=en_US.UTF-8' >> ~/.bashrc
echo 'export LC_ALL=en_US.UTF-8' >> ~/.bashrc
source ~/.bashrc
✅ 推荐组合(90% 情况)
LANG=en_US.UTF-8
UTF-8
你可以直接把下面信息发我:
locale 输出cat /etc/centos-release
我可以给你针对你环境的最小修改方案 ✅