Próbuję połączyć się z mojego Gentoo do serwera RHEL. Oba zostały mosh
zainstalowane, ale pojawia się ten błąd:
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.
Na RHEL mam następujące lokalizacje:
# 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=
Jak mogę to naprawić?
AKTUALIZACJA: Problem wydaje się być po stronie Gentoo, połączenie z serwerem debian powoduje ten sam błąd, połączenie przy użyciu innych dystrybucji działa.
UPDATE2: Naprawiłem to, dodając
LANG="en_US.UTF-8"
export LANG
w ~/.bashrc
Odpowiedzi:
Proste rozwiązanie
źródło
LC_ALL="en_US.UTF-8" mosh root@server
mosh
używa środowiska ustawień regionalnych obsługiwanego przezssh
. Chociażmosh
najwyraźniej nie ma pełnych opcji ani opcji debugowania, możesz powiedzieć, jakiejssh
komendy użyć podczas łączenia, a dodając-vvv
opcję możessh
pokazać, które zmienne ustawień regionalnych wysyła .Na przykład, zaczynając od
możesz zobaczyć
dla POSIX i
które pokazują, że serwer potwierdza używane zmienne. Pilot
sshd
może ignorować niektóre środowiska w zależności od ustawieniaAcceptEnv
w konfiguracji dlasshd
- lub ustawień użytkownikaSendEnv
(wssh
konfiguracji).Nie wszystkie serwery akceptują zmienne regionalne przez ssh.
Nawet jeśli konfiguracja konfiguracji jest dozwolona, nadal jest możliwe (zwłaszcza, że łączysz się z użytkownikiem root ), że ktoś zdecydował, że ustawieniami narodowymi tego użytkownika powinien być POSIX. W przypadku rootowania ma to sens, ponieważ wpadłbyś w mniej kłopotów, wybierając / wklejając kopiowanie.
Na przykład niektóre systemy używają
/etc/profile.d/lang.sh
ustawień regionalnych do użytku interaktywnego. Ten skrypt różni się w zależności od systemu i jest drugim miejscem (po konfiguracjach ssh / sshd), które należy wziąć pod uwagę, szukając wyjaśnienia, dlaczego informacje o ustawieniach regionalnych nie są przekazywane do zdalnego systemu. W Red Hat (CentOS) skrypt próbuje uzyskać informacje z konfiguracji systemowej i domowej, np.SuSE jest inny, przyjmując założenia dotyczące ssh i gdm przed odczytaniem zasadniczo tych samych plików:
Dla poszczególnych serwerów (wersja nieokreślona) skrypt może się różnić w zależności od wersji. Moje serwery Debian nie mają tego pliku - i ustawiają interaktywne ustawienia regionalne za pomocą domyślnych ustawień regionalnych systemu i gdm (które mogą się różnić). Twoje połączenie ssh może mieć inną wartość w ustawieniach regionalnych systemu niż sesja interaktywna z użyciem X (przez gdm). W takim przypadku ustawienia regionalne systemu są miejscem do naprawy (zobacz Ustawienia regionalne w wiki Debiana).
źródło