Debian 6(64비트) VPS가 있는데 로케일 환경 변수 LANG 및 LC_*를 설정할 수 없는 것 같습니다. (아래의 모든 것은 루트입니다).
vps:~# locale -a
C
POSIX
en_US.utf8
nl_NL.utf8
vps:~# locale
LANG=
LANGUAGE=
LC_CTYPE="POSIX"
LC_NUMERIC="POSIX"
LC_TIME="POSIX"
LC_COLLATE="POSIX"
LC_MONETARY="POSIX"
LC_MESSAGES="POSIX"
LC_PAPER="POSIX"
LC_NAME="POSIX"
LC_ADDRESS="POSIX"
LC_TELEPHONE="POSIX"
LC_MEASUREMENT="POSIX"
LC_IDENTIFICATION="POSIX"
LC_ALL=
vps:~# cat /etc/default/locale
# File generated by update-locale
LANG=en_US.UTF-8
LC_CTYPE=en_US.UTF-8
LC_COLLATE=POSIX
이는 내 SSH 클라이언트를 통해 제공된 로케일을 재정의해야 하지만 기본 로케일이 작동하지 않습니다.
.profile, .bashrc, /etc/environment 및 /etc/profile에는 로케일 설정이 포함되어 있지 않습니다. 이러한 환경 변수가 나오는 다른 위치를 찾지 못했습니다.
me:~# grep "LANG" ~/.profile ~/.bashrc /etc/environment /etc/profile
me:~# grep "LC_" ~/.profile ~/.bashrc /etc/environment /etc/profile
me:~#
내 SSH 클라이언트 설정도 작동하지 않았지만 다른 VPS에서는 작동했습니다. 로컬로 내 /etc/ssh/ssh_config에는 다음이 있습니다.
SendEnv LANG LC_*
VPS에서 /etc/ssh/sshd_config에는 다음이 포함됩니다.
# Allow client to pass locale environment variables
AcceptEnv LANG LC_*
변수가 유효해야 하는지 잘 모르겠지만 내 VPS의 /etc/pam.d/login에 다음이 포함되어 있습니다.
# locale variables are also kept into /etc/default/locale in etch
# reading this file *in addition to /etc/environment* does not hurt
session required pam_env.so readenv=1 envfile=/etc/default/locale
/etc/pam.d/sshd에는 다음이 포함됩니다.
# Read environment variables from /etc/environment and
# /etc/security/pam_env.conf.
auth required pam_env.so # [1]
# In Debian 4.0 (etch), locale-related environment variables were moved to
# /etc/default/locale, so read that as well.
auth required pam_env.so envfile=/etc/default/locale
(내 것에는 /etc/security/pam_env.conf
댓글 옵션만 포함되어 있습니다)
따라서 내 /etc/default/locale 또는 SSH 클라이언트의 로케일이 적용되는 것을 허용하지 않는 것 같아서 기본값이 POSIX로 설정됩니다(또는 명시적으로 POSIX를 강제하는 항목). 방해할 수 있는 단서가 있나요? 아니면 그것이 무엇인지 알아내는 방법은 무엇입니까?
내 .bashrc에서 다른 작업을 수행 할 수 export LC_CTYPE=en_US.UTF-8
있는데 이것이 작동합니다. 하지만 저는 이 동작을 이해하려고 노력하고 있는데, 이는 제가 사용하고 있는 다른 Debian(6 또는 7) 설치의 동작과 다릅니다.
편집: 자세한 내용:
- 시스템을 다시 시작했지만 아무런 효과가 없었습니다.
- /etc/ssh/sshd_config에는
UsePAM yes
; - 나는 또한
en_US.utf8
대체 이름으로 사용해 보았습니다/etc/default/locale
.
답변1
sshd 구성 파일의 [PermitUserEnvironment]도 yes로 설정되어 있는지 확인해야 합니다. 기본값이 무엇인지 모르겠습니다.