Debian SSH 连接使用中文

本意是好的,只是没有考虑到:在服务器上用中文的用户,其客户端也必然支持中文。

2023/08/23

背景

最近,我给家里的 home server 重装了操作系统,从带 GUI 的 Arch 迁移到了无 GUI 的 Debian。原因是 Arch 更新实在是太频繁了,而且前几周刚发生了一次 grub 更新导致卡 boot(见 Latest grub bricked my system (grub_is_shim_lock_enabled not found))。

在安装过程中,我已经在 Graphical expert install 中选择了简体中文语言及 UTF-8 编码(即 zh_CN.UTF-8),但使用 root 身份通过 SSH 连接时,屏幕上的输出语言仍然是英语,LANGLANGUAGE 环境变量的值甚至不是诸如 en_US.UTF-8 的正常英文环境值,而是 C

解决方案

我首先执行了 dpkg-reconfigure locales 命令,发现已选区域设置正是 zh_CN.UTF-8,说明问题不在这里。然后我尝试重新安装 locales 并额外安装 locales-all 软件包,然后再重新生成区域设置文件,但问题依旧。我甚至尝试了选择 en_US.UTF-8 的区域设置,但 LANGLANGUAGE 环境变量的值仍然是 C。真是 confusing。

后来,一次偶然的机会我看了看 .profile 文件,发现末尾赫然显现这五行英文:

# Installed by Debian Installer:"
#  no localization for root because zh_CN.UTF-8"
#  cannot be properly displayed at the Linux console"
LANG=C
LANGUAGE=C

不无道理,但你是不是太瞧不起 UTF-8 和 modern Linux console 了?删掉末尾这两行后再重新登录,能正常显示中文了。