我有一台 debian 服务器,其语言环境设置为 hu_HU.UTF-8,如果我通过控制台登录,匈牙利语可以完美运行。它还可以通过 ssh 登录,直到我在 sshd 配置中禁用 PAM。从那时起,当我通过 ssh 登录时,语言环境设置为 POSIX。
我尝试注释掉AcceptEnv LANG LC_*
sshd_config 中的这一行,但问题仍然存在。我正在使用 UTF-8 字符集的 Putty 进行连接。
那么我该如何解决这个问题?
答案1
PuTTY 未设置 LANG
您在 PuTTY 中设置的区域设置与系统上的环境变量完全脱钩。引用其文档:
不幸的是,PuTTY 和服务器没有令人满意的机制来传达这些信息,因此通常必须手动配置。
在 PuTTY 将默认字符编码更改为 UTF-8 之前,操作系统将默认设置为启用 UTF-8 的区域设置(通常是en_US.UTF-8
)是一种极为常见的情况,而 PuTTY 会根据其自身的ISO-8859-1:1998
默认值误解该设置。
PAM 不仅仅是身份验证
您很可能选择了UsePAM
否,而没有意识到这不仅会关闭 PAM 身份验证。sshd_config
手册页中的关键词是:
启用可插入身份验证模块接口。如果设置为“是”,这将使用 ChallengeResponseAuthentication 和 PasswordAuthentication 启用 PAM 身份验证除了 PAM 帐户和会话模块处理所有身份验证类型之外。
您的控制台登录仍在调用与account
和session
设施相关的 PAM 模块,但您的 SSH 登录不再这样做。我建议您重新启用 PAM。此时,如果您的目标是要求基于密钥的身份验证,您可以禁用和。PasswordAuthentication
(ChallengeResponseAuthentication
这总是绕过 PAM 的auth
功能)