mosh-server necesita un entorno local UTF-8 para ejecutarse


9

Estoy intentando conectarme desde mi Gentoo al servidor RHEL. Ambos se han moshinstalado, sin embargo, aparece este error:

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.

En RHEL tengo las siguientes configuraciones regionales:

# 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=

¿Cómo puedo arreglar esto?

ACTUALIZACIÓN: El problema parece estar en el lado de Gentoo, conectarse al servidor Debian produce el mismo error, conectarse usando otras distribuciones funciona.

ACTUALIZACIÓN2: lo arreglé agregando

LANG="en_US.UTF-8"
export LANG

dentro ~/.bashrc


Para aquellos que usan Ubuntu o cualquier Debian como distro, aquí puede haber una solución.
Pablo A

Respuestas:


6

Solución simple

user@machine:~$ LC_ALL="en_US.UTF-8" mosh-server

En caso de que no esté claro, esto se puede usar en el cliente:LC_ALL="en_US.UTF-8" mosh root@server
Tim Visee

3

moshusa el entorno local compatible con ssh. Si bien moshaparentemente no tiene opciones detalladas o de depuración, puede decirle qué sshcomando usar al conectarse y al agregar una -vvvopción puede sshmostrar qué variables de configuración regional envía .

Por ejemplo, comenzando con

mosh -ssh='ssh -vvv' root@server

es posible que vea

debug1: Sending env LC_ALL = C  
debug2: channel 0: request env confirm 0

para POSIX y

debug1: Sending env LC_CTYPE = en_US.UTF-8
debug2: channel 0: request env confirm 0

que muestran que el servidor confirma las variables que se utilizan. El control remoto sshdpuede ignorar parte de su entorno dependiendo de la configuración de AcceptEnvla configuración de sshd- o la configuración de su usuario SendEnv(en su sshconfiguración).

No todos los servidores aceptan sus variables locales a través de ssh.

Incluso con la configuración de configuración permisiva, aún es posible (particularmente porque se está conectando al usuario raíz ) que alguien haya decidido que la configuración regional para ese usuario debe ser POSIX. Para root , eso tiene algún sentido porque se metería en menos problemas al seleccionar / pegar la copia.

Por ejemplo, algunos sistemas utilizan /etc/profile.d/lang.shpara establecer la configuración regional para uso interactivo. Esa secuencia de comandos difiere de un sistema a otro, y es el segundo lugar (después de las configuraciones ssh / sshd) a tener en cuenta al buscar una explicación de por qué la información regional no se pasa a un sistema remoto. Con Red Hat (CentOS), el script intenta obtener información de la configuración del sistema y del hogar, por ejemplo,

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 es diferente, haciendo suposiciones sobre ssh y gdm antes de leer esencialmente los mismos archivos:

#
# 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

Para sus servidores particulares (versión no especificada), el script puede diferir de una versión a otra. Mis servidores Debian no tienen ese archivo, y dependen de la configuración regional predeterminada del sistema y gdm (que pueden diferir) para establecer la configuración regional interactiva. Su conexión ssh podría usar un valor diferente con la configuración regional del sistema que una sesión interactiva usando X (a través de gdm). En ese caso, la configuración regional del sistema es el lugar para arreglar (consulte Configuración regional en la wiki de Debian).

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.