SSH语言环境错误

我有一个设置为hu_HU.UTF-8的语言环境的debian服务器,如果我login槽控制台,它在匈牙利完美的作品。 它也与sshlogin一起工作,直到我在sshdconfiguration中禁用PAM。 从那时起,当我login槽ssh的语言环境设置为POSIX。

我试图评论sshd_config中的AcceptEnv LANG LC_*行,但问题仍然存在。 我使用UTF-8字符集与Putty连接。

那我该如何解决这个问题?

PuTTY不设置LANG

您在PuTTY中设置的语言环境与系统上的环境variables完全分离。 引用其文档:

遗憾的是,PuTTY和服务器之间没有令人满意的机制来传递这些信息,因此通常必须手动configuration。

在PuTTY将默认的字符编码改为UTF-8之前,操作系统的默认设置是UTF-8启用的语言环境(通常是en_US.UTF-8 ),这是一个非常普遍的情况,因为PuTTY会错误地解释自己的ISO-8859-1:1998默认。

PAM不仅仅是authentication

很可能你已经把UsePAM变成了否,并没有意识到这不仅仅是PAMauthentication。 sshd_config页中的操作单词是:

启用可插入的身份validation模块界面。 如果设置为“是” ,则除PAM帐户和会话模块处理外,还将使用ChallengeResponseAuthentication和PasswordAuthentication 为所有validationtypes启用PAMvalidation。

您的控制台login仍在调用与accountsessionfunction关联的PAM模块,但您的SSHlogin不再执行此操作。 我build议你重新启用PAM。 此时,如果您的目标是要求基于密钥的身份validation,则可以禁用PasswordAuthenticationChallengeResponseAuthentication 。 (它总是绕过PAM的auth设施)