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


17

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

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


Ответы:


16

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

Host example.com
    SendEnv FOO

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

FOO=bar ssh user@example.com

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

AcceptEnv FOO

Чего именно вы хотели бы избежать?
Майкл Хэмптон

1
Необходимость написать псевдоним для отправки переменной с заданным значением.
ℝaphink

Извините, больше ничего вы не можете сделать ... если вы не можете заставить компьютер читать ваши мысли. :)
Майкл Хэмптон

6
Спасибо за подтверждение моих подозрений , хотя ;-) Я бы хотел бы было что - то вроде SetVar FOO='bar'в ssh_config;)
ℝaphink

2
Повторяющийся случай для меня заключается в том, что старые системы не поддерживают, TERM=tmux-256colorпоэтому я бы хотел использовать запасной вариант для удаленного хоста (с подстановочными знаками).
Джед

4

Вы можете дать конкретное значение, используя 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.


2
Примечание для озадаченного читателя (как и я, когда я впервые прочитал это): это новинка с момента выпуска OpenSSH 7.8, выпущенного в августе 2018 года, и потребуется некоторое время, чтобы он стал доступен для обычного пользователя через обновления ОС. (Но как только оно станет распространенным, оно станет лучшим решением проблемы)
Ирфи

1

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

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

0

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

Host example.com
SendEnv FOO

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.