Встановлення змінної для даного хоста 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
Необхідно написати псевдонім, щоб надіслати змінну із заданим значенням.
phaphink

Вибачте, не багато іншого ви можете зробити, якщо ви не зможете комп'ютер прочитати свою думку. :)
Майкл Хемптон

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 року, і пройде деякий час, щоб він став доступним для пересічного користувача через оновлення ОС. (Але як тільки це стане загальним, це буде, безумовно, найкращим рішенням проблеми)
Irfy

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.