Я не мог найти это нигде, так что мне интересно, я единственный, кто затрагивает такую проблему.
По умолчанию ssh в Red Hat и Debian, по крайней мере, имеет ssh_config с опцией SendEnv, передающей переменные LC * и LANG в удаленном сеансе. Если кто-то не root для изменения / etc / ssh / ssh_config, как он может отключить это поведение? Опция SendEnv, похоже, накапливается, и я не вижу способа ее сбросить.
И чтобы меня не спрашивали, мне нужно избегать передачи моей локали на тестовые машины, чтобы избежать побочных эффектов для скриптов и программ, которые полагаются на локаль, используемую по умолчанию для машины.
ssh
debian
redhat-enterprise-linux
openssh
akostadinov
источник
источник
env
или с помощью скрипта-обертки?Ответы:
Ты не единственный . Как задокументировано,
ssh_config(5)
вы не можете сброситьSendEnv
, потому чтоЕсли у вас есть root на тестовых машинах, вы можете изменить,
AcceptEnv
чтобы не принимать переменные, отправленные клиентом.источник
Это не может быть сделано,
~/.ssh/config
потому чтоSendEnv
не может быть переопределено.Использование псевдонимов не будет работать для скриптов, которые вызывают ssh.
Одна альтернатива - экспортировать функцию. Например, в
~/.bashrc
:источник
Есть опция
SetEnv
, можно принудительноLANG
указать какое-то конкретное значение перед отправкой.Также страница руководства говорит, что
но мне не удалось сделать эту работу.
источник
-
подход не сработал. Хорошее предложение, хотя жестко закодировать удаленный LANG и другие переменные в конфигурации SSH. Делает вещи более предсказуемыми. Возможно,SetEnv
это более новая директива, потому что никто не предложил об этом.SetEnv LANG=en_US.UTF-8
Если вы используете bash, вы можете настроить псевдоним ssh = 'LANG = command ssh', чтобы отключить передачу LANG другим серверам.
источник
Вы можете использовать,
su - youruser
когда вы вошли в систему через SSH. Это повторно инициализирует среду для пользователя.На самом деле вы инициализируете новый сеанс с новой средой.
источник
По словам
man ssh
:Таким образом, вы можете ssh без соблюдения
/etc/ssh/ssh_config
, явно указав (по умолчанию) файл конфигурации в командной строке (~/.ssh/config
нормально, чтобы он был пустым):Вы можете сделать псевдоним для этого в
~/.bashrc
:Перезапустите оболочку bash, тогда вы можете просто использовать ssh так:
источник
if one supplies on command line -F, then the system wide config is ignored according to man page
от bugzilla.mindrot.org/show_bug.cgi?id=1285 ; это вариант, но не совсем желаемая функция.