Estou tentando conectar do meu servidor Gentoo ao RHEL. Ambos foram mosh
instalados, no entanto, recebo este erro:
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.
No RHEL, tenho os seguintes códigos de idioma:
# 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=
Como posso consertar isso?
ATUALIZAÇÃO: O problema parece estar do lado do Gentoo, conectar ao servidor debian produz o mesmo erro, conectar usando outras obras de distribuição.
UPDATE2: corrigi adicionando
LANG="en_US.UTF-8"
export LANG
para dentro ~/.bashrc
Respostas:
Solução Simples
fonte
LC_ALL="en_US.UTF-8" mosh root@server
mosh
usa o ambiente de localidade suportado porssh
. Emboramosh
aparentemente não tenha opções detalhadas ou de depuração, você pode dizer qualssh
comando usar ao se conectar e, ao adicionar uma-vvv
opção, podessh
mostrar quais variáveis de localidade ele envia .Por exemplo, começando com
você pode ver
para POSIX e
que mostram que o servidor confirma as variáveis usadas. O controle remoto
sshd
pode ignorar alguns dos seu ambiente, dependendo da definição deAcceptEnv
na configuração parasshd
- ou do seu usuárioSendEnv
configurações (na suassh
configuração).Nem todos os servidores aceitam suas variáveis de localidade via ssh.
Mesmo com a configuração permitida, ainda é possível (principalmente porque você está se conectando ao usuário root ) que alguém tenha decidido que o local para esse usuário deveria ser POSIX. Para root , isso faz algum sentido, porque você teria menos problemas ao selecionar / colar a cópia.
Por exemplo, alguns sistemas usam
/etc/profile.d/lang.sh
para definir o código do idioma para uso interativo. Esse script difere de um sistema para outro e é o segundo lugar (após as configurações do ssh / sshd) a considerar ao procurar uma explicação sobre por que as informações de localidade não são passadas para um sistema remoto. Com o Red Hat (CentOS), o script tenta obter informações da configuração do sistema e da casa, por exemplo,O SuSE é diferente, fazendo suposições sobre ssh e gdm antes de ler essencialmente os mesmos arquivos:
Para seus servidores específicos (versão não especificada), o script pode diferir de uma versão para outra. Meus servidores Debian não possuem esse arquivo - e confiam no código de idioma do sistema padrão e no gdm (que podem ser diferentes) para definir o código de idioma interativo. Sua conexão ssh pode usar um valor diferente com o código do idioma do sistema que uma sessão interativa usando X (via gdm). Nesse caso, a localidade do sistema é o local a ser corrigido (consulte Localidade no wiki Debian).
fonte