Nigdzie nie mogłem tego znaleźć, więc zastanawiam się, czy tylko ja mam do czynienia z takim problemem.
Domyślnie ssh w Red Hat i Debian ma przynajmniej ssh_config z opcją SendEnv przekazującą zmienne LC * i LANG w sesji zdalnej. Jeśli ktoś nie jest rootem, aby zmienić / etc / ssh / ssh_config, jak może wyłączyć to zachowanie? Opcja SendEnv wydaje się kumulować i nie widzę żadnego sposobu, aby ją zresetować.
Aby uniknąć pytania, muszę unikać przekazywania ustawień regionalnych do testowania maszyn, aby uniknąć skutków ubocznych skryptów i programów, które domyślnie używają ustawień regionalnych.
ssh
debian
redhat-enterprise-linux
openssh
akostadinov
źródło
źródło
env
lub za pomocą skryptu opakowania?Odpowiedzi:
Nie jesteś jedyny . Jak udokumentowano
ssh_config(5)
, nie można rozbroićSendEnv
, ponieważJeśli masz root na testowych komputerach, możesz zmienić,
AcceptEnv
aby nie akceptować zmiennych wysyłanych przez klienta.źródło
Nie można tego zrobić,
~/.ssh/config
ponieważSendEnv
nie można go zastąpić.Używanie aliasów nie działa w skryptach wywołujących ssh.
Jedną z możliwości jest eksport funkcji. Np. W
~/.bashrc
:źródło
Istnieje opcja
SetEnv
, którą można wymusićLANG
do określonej wartości przed wysłaniem.Mówi to również strona man
ale nie udało mi się sprawić, żeby to działało.
źródło
-
podejście nie zadziałało. Dobra sugestia, aby jednak zakodować zdalnie LANG i inne zmienne w konfiguracji ssh. Sprawia, że rzeczy są bardziej przewidywalne. Być możeSetEnv
jest to nowsza dyrektywa, ponieważ nikt inny jej nie zasugerował.SetEnv LANG=en_US.UTF-8
Jeśli używasz bash, możesz ustawić alias ssh = 'LANG = polecenie ssh', aby wyłączyć przekazywanie LANG do innych serwerów.
źródło
Możesz użyć,
su - youruser
gdy jesteś zalogowany przez ssh. Spowoduje to ponowne zainicjowanie środowiska dla użytkownika.W rzeczywistości inicjujesz nową sesję w nowym środowisku.
źródło
Według
man ssh
:Możesz więc ssh bez przestrzegania
/etc/ssh/ssh_config
, jawnie określając (domyślny) plik konfiguracyjny w wierszu poleceń (~/.ssh/config
jest OK, aby być pustym):Możesz utworzyć dla niego alias w
~/.bashrc
:Uruchom ponownie powłokę bash, a następnie możesz po prostu ssh w następujący sposób:
źródło
if one supplies on command line -F, then the system wide config is ignored according to man page
from bugzilla.mindrot.org/show_bug.cgi?id=1285 ; jest to opcja, ale nie jest to pożądana funkcja.