젠투에서 RHEL 서버로 연결하려고합니다. 둘 다 mosh
설치되었지만이 오류가 발생합니다.
petanb@localhost ~/Documents $ mosh root@server
mosh-server needs a UTF-8 native locale to run.
Unfortunately, the local environment ([no charset variables]) specifies
the character set "US-ASCII",
The client-supplied environment ([no charset variables]) specifies
the character set "US-ASCII".
LANG=
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=
Connection to server closed.
/usr/bin/mosh: Did not find mosh server startup message.
RHEL에는 다음 로케일이 있습니다.
# locale
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=
이 문제를 어떻게 해결할 수 있습니까?
업데이트 : 문제는 젠투 측에있는 것으로 보입니다. 데비안 서버에 연결하면 다른 배포판 작업을 사용하여 연결하면 동일한 오류가 발생합니다.
UPDATE2 : 추가하여 수정했습니다.
LANG="en_US.UTF-8"
export LANG
으로 ~/.bashrc
답변
간단한 솔루션
user@machine:~$ LC_ALL="en_US.UTF-8" mosh-server
답변
mosh
에서 지원하는 로캘 환경을 사용합니다 ssh
. 하지만 mosh
분명히 더 verbose- 또는 디버그 옵션이 없습니다, 당신은 무엇을 말할 수있는 ssh
연결할 때 명령을 사용하고 추가로 -vvv
가질 수 옵션 ssh
이 변수 로켈이란 쇼 보냅니다 .
예를 들어
mosh -ssh='ssh -vvv' root@server
당신은 볼 수 있습니다
debug1: Sending env LC_ALL = C
debug2: channel 0: request env confirm 0
POSIX의 경우
debug1: Sending env LC_CTYPE = en_US.UTF-8
debug2: channel 0: request env confirm 0
이는 서버 가 사용 된 변수를 확인 함 을 나타냅니다 . 의 구성 설정 또는 사용자 설정 ( 구성의)에 sshd
따라 리모콘 이 일부 환경을 무시할 수 있습니다 .AcceptEnv
sshd
SendEnv
ssh
모든 서버가 ssh를 통해 로케일 변수를 허용하지는 않습니다.
구성 설정이 허용되는 경우에도 누군가가 해당 사용자의 로케일이 POSIX 여야한다고 결정했을 가능성이 있습니다 (특히 루트 사용자에 연결 한 이후 ). 들어 루트 당신이 선택에 의해 덜 곤경에 얻을 것 때문에 몇 가지 의미가 있습니다, / 복사하여 붙여 넣습니다.
예를 들어, 일부 시스템 /etc/profile.d/lang.sh
은 대화식 사용을 위해 로케일을 설정하는 데 사용합니다. 이 스크립트는 시스템마다 다르며 로케일 정보가 원격 시스템으로 전달되지 않는 이유에 대한 설명을 찾을 때 고려해야 할 두 번째 (ssh / sshd 구성 이후)입니다. Red Hat (CentOS)을 사용하여 스크립트는 시스템 및 홈 구성에서 정보를 가져 오려고 시도합니다 (예 :
if [ -n "$LANG" ]; then
saved_lang="$LANG"
[ -f "$HOME/.i18n" ] && . "$HOME/.i18n" && sourced=1
LANG="$saved_lang"
unset saved_lang
else
for langfile in /etc/locale.conf "$HOME/.i18n" ; do
[ -f $langfile ] && . $langfile && sourced=1
done
fi
SuSE는 다르므로 본질적으로 동일한 파일을 읽기 전에 ssh 및 gdm에 대해 가정 합니다.
#
# lang.sh: Set interactive language environment
#
# Used configuration files:
#
# /etc/sysconfig/language
# $HOME/.i18n
#
#
# Already done by the remote SSH side
#
test -z "$SSH_SENDS_LOCALE" || return
#
# Already done by the GDM
#
test -z "$GDM_LANG" || return
특정 서버 (버전이 지정되지 않음)의 경우 스크립트가 릴리스마다 다를 수 있습니다. 내 데비안 서버에는 해당 파일이 없으며 기본 시스템 로케일과 gdm (상이 할 수 있음)을 사용하여 대화식 로케일을 설정하십시오. ssh 연결은 시스템 로케일에서 X를 사용하는 대화식 세션 (gdm을 통해)과 다른 값을 사용할 수 있습니다. 이 경우, 시스템 로케일을 수정해야합니다 ( Debian 위키의 로케일 참조 ).