温馨提示×

centos ssh乱码如何处理

小樊
47
2026-10-17 09:10:29
栏目: 智能运维

在 CentOS 中通过 SSH 连接后出现乱码,通常是字符集(编码)不一致导致的。可按下面步骤逐一排查和解决。


一、确认问题来源

乱码常见表现:

  • 中文显示为 ???? 或乱码方块
  • ls 中文文件名乱码
  • vim 打开中文文件乱码

二、客户端(本地)设置(最重要)

1. 设置 SSH 客户端编码为 UTF-8

如果你使用的是:

  • Xshell / SecureCRT / PuTTY
    • 编码设置为 UTF-8
    • 字体选择支持中文的(如 Consolas、宋体)

2. 本地终端环境变量

echo $LANG

正常应为:

zh_CN.UTF-8
# 或
en_US.UTF-8

三、CentOS 服务端设置

1. 查看当前字符集

locale

若看到:

LANG=
LC_ALL=

说明未设置。


2. 设置 UTF-8 字符集

临时生效

export LANG=zh_CN.UTF-8
export LC_ALL=zh_CN.UTF-8

永久生效(推荐)

vi /etc/profile

添加:

export LANG=zh_CN.UTF-8
export LC_ALL=zh_CN.UTF-8

保存后:

source /etc/profile

或:

localectl set-locale LANG=zh_CN.UTF-8

3. 确认系统支持 UTF-8

locale -a | grep UTF-8

若无 zh_CN.utf8,安装:

yum install -y glibc-locale-source
localedef -i zh_CN -f UTF-8 zh_CN.UTF-8

四、SSH 配置检查

1. 禁止 SSH 覆盖 locale

vi /etc/ssh/sshd_config

确保:

# AcceptEnv LANG LC_*
AcceptEnv LANG LC_ALL LC_CTYPE

重启 SSH:

systemctl restart sshd

五、文件/编辑工具乱码处理

vim 乱码

vi ~/.vimrc

添加:

set fileencodings=utf-8,gbk
set encoding=utf-8

六、快速自检清单 ✅

  • [ ] 客户端编码 = UTF-8
  • [ ] 服务端 LANG=zh_CN.UTF-8
  • [ ] SSH 未覆盖 locale
  • [ ] 字体支持中文

如果你能告诉我:

  • 使用的 SSH 客户端
  • 是 命令乱码 还是 文件乱码

我可以给你更精确的解决办法。

0 踩