温馨提示×

centos ssh乱码怎么回事

小樊
55
2026-09-05 20:37:19
栏目: 智能运维

CentOS 下 SSH 连接出现乱码,通常是字符集不一致导致的。下面按常见原因和解决办法说明:


一、最常见原因:本地与服务器字符集不一致

1. 查看服务器字符集

locale
echo $LANG

正常应为(中文环境):

LANG=zh_CN.UTF-8

如果是:

LANG=C

ASCII,就容易乱码。


二、服务器端解决(推荐)

方法 1:设置为 UTF-8

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

永久生效(CentOS 7):

localectl set-locale LANG=zh_CN.UTF-8

或编辑:

vi /etc/locale.conf

内容:

LANG="zh_CN.UTF-8"

三、SSH 客户端设置(非常关键)

1. 确认客户端使用 UTF-8

  • Xshell / SecureCRT / PuTTY
    • 字符编码 → UTF-8
  • Windows 终端
    chcp 65001
    

2. 检查 SSH 是否传递环境变量

编辑服务器:

vi /etc/ssh/sshd_config

确保有:

AcceptEnv LANG LC_*

然后重启:

systemctl restart sshd

四、文件本身编码问题

如果是 cat 文件乱码

file 文件名

转换编码:

iconv -f GBK -t UTF-8 file.txt > new.txt

五、终端类型问题(较少见)

echo $TERM

正常应为:

xterm
xterm-256color

六、快速自检清单 ✅

  • [ ] 服务器 LANG=zh_CN.UTF-8
  • [ ] SSH 客户端编码 = UTF-8
  • [ ] sshd 允许 LANG
  • [ ] 文件本身是 UTF-8

如果你愿意,可以告诉我:

  • 用的是 什么 SSH 客户端
  • 命令乱码 还是 文件内容乱码
  • CentOS 版本(6 / 7 / 8 / Stream)

我可以给你更精确的解决方案。

0