Назад | Перейти на главную страницу

Установка переменной для данного SSH-хоста

В ssh_config, можно выбрать экспорт некоторых переменных среды на хост, используя SendEnv.

Есть ли способ принудительно задать значение этой переменной для каждого хоста? Например, можно ли экспортировать переменную $FOO со значением bar только при подключении к хосту example.com?

Вы не можете дать конкретную стоимость для переменной среды в ssh_config, но вы, конечно, можете отправить существующую переменную среды только на определенные хосты.

Host example.com
    SendEnv FOO

Чтобы завершить цепочку:

FOO=bar ssh user@example.com

Наконец, удаленный сервер должен иметь переменную среды, указанную в AcceptEnv в его sshd_config.

AcceptEnv FOO

Вы можете указать конкретное значение, используя SetEnv в твоем ~/.ssh/config, например

Host *
  SetEnv FOO=bar

Согласно man ssh_config:

Непосредственно укажите одну или несколько переменных среды и их содержимое для отправки на сервер. Аналогично SendEnv, сервер должен быть готов принять переменную среды.

Предполагая, что ваш сервер получил следующую строку в /etc/ssh/sshd_config:

AcceptEnv LANG LC_* FOO

Также проверьте: man ssh_config и man sshd_config.

Вы можете установить значения конфигурации для каждого хоста, используя файл .ssh / config. Например:

Host example.com
SendEnv FOO

Обратите внимание, что сервер также должен его поддерживать.

Другая идея - установить переменные среды в команде ssh и запустить интерактивную оболочку, например. Я пытаюсь вызвать интерактивную оболочку с env-var 'MANWIDTH':

ssh example.com 'MANWIDTH=120 bash -li'