Ich versuche, eine Verbindung von meinem Gentoo zum RHEL-Server herzustellen. Beide haben mosh
installiert, aber ich bekomme diesen Fehler:
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.
Auf RHEL habe ich folgende Gebietsschemas:
# 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=
Wie kann ich das beheben?
UPDATE: Das Problem scheint auf der Gentoo-Seite zu liegen. Die Verbindung zum Debian-Server führt zu demselben Fehler. Die Verbindung mit anderen Distributionen funktioniert.
UPDATE2: Ich habe es durch Hinzufügen behoben
LANG="en_US.UTF-8"
export LANG
in ~/.bashrc
Antworten:
Einfache Lösung
quelle
LC_ALL="en_US.UTF-8" mosh root@server
mosh
Verwendet die von unterstützte Umgebungssh
. Obwohl esmosh
anscheinend keine ausführlichen oder Debug-Optionen gibt, können Sie ihm mitteilen, welcherssh
Befehl beim Verbinden verwendet werden soll, und durch Hinzufügen einer-vvv
Option kann angezeigt werdenssh
, welche Gebietsschemavariablen gesendet werden .Zum Beispiel beginnend mit
Sie könnten sehen
für POSIX und
die zeigen, dass der Server die verwendeten Variablen bestätigt . Die Fernbedienung
sshd
ignoriert möglicherweise einige Ihrer Umgebungen, abhängig von der EinstellungAcceptEnv
in der Konfiguration fürsshd
- oder denSendEnv
Einstellungen Ihres Benutzers (in Ihrerssh
Konfiguration).Nicht alle Server akzeptieren Ihre Gebietsschemavariablen über ssh.
Selbst wenn das Konfigurationssetup zulässig ist, ist es immer noch möglich (insbesondere da Sie eine Verbindung zum Root- Benutzer herstellen), dass jemand entschieden hat, dass das Gebietsschema für diesen Benutzer POSIX sein soll. Für root ist dies sinnvoll, da Sie durch Kopieren mit Auswahl / Einfügen weniger Probleme bekommen würden.
Einige Systeme verwenden beispielsweise
/etc/profile.d/lang.sh
das Gebietsschema für die interaktive Verwendung. Dieses Skript unterscheidet sich von System zu System und ist der zweite Ort (nach den ssh / sshd-Konfigurationen), der berücksichtigt werden muss, wenn nach einer Erklärung gesucht wird, warum Gebietsschemainformationen nicht an ein Remote-System übergeben werden. Mit Red Hat (CentOS) versucht das Skript, Informationen aus der System- und Heimkonfiguration abzurufen, z.SuSE ist anders und nimmt Annahmen über ssh und gdm vor, bevor im Wesentlichen dieselben Dateien gelesen werden:
Für Ihre speziellen Server (Version nicht angegeben) kann das Skript von Version zu Version unterschiedlich sein. Meine Debian-Server haben diese Datei nicht - und verlassen sich auf das Standard-Gebietsschema des Systems und gdm (die sich unterscheiden können), um das interaktive Gebietsschema festzulegen. Ihre SSH-Verbindung verwendet möglicherweise einen anderen Wert für das Systemgebietsschema als eine interaktive Sitzung mit X (über GDM). In diesem Fall muss das Gebietsschema des Systems korrigiert werden (siehe Gebietsschema im Debian-Wiki).
quelle