Regexp в .ssh / config


12

На роботі мені часто доводиться входити в хости, які дотримуються загальної схеми іменування, наприклад qc01- qc12, hc01- hc10і так далі. Всі вони повинні отримати однакові значення конфігурації у моєму ноутбуці .ssh/config. Звичайно, я міг би використовувати дані для господарів qc*і hc*, але мені цікаво , якщо замість того, щоб це як - то можна використовувати регулярні вирази?

Відповіді:


11

Оскільки заявлений gelraen за замовчуванням ssh_configне підтримує регулярні вирази, але ви можете спробувати щось інше, як-от:



3

Ви можете використовувати повні регулярні вирази у своїх ssh_config.

Відповідну документацію IMO дуже важко читати та розуміти. Я розумію це лише тому, що в мене 13+ років досвіду роботи Linux та 8+ років використання ssh. Отже, ось мій підсумок документації:

  • man ssh_config описує функцію, яку називають Match
  • то є функція, execяка називається, яку ви можете використовувати довільну команду оболонки для визначення відповідності
  • передача вхідних параметрів до довільної команди оболонки можлива і описана в розділі, що позначений TOKENS

У моєму випадку я в кінцевому підсумку використовував~/.ssh/config :

Match exec "echo %h | grep -q 'NAME[0-9]\+$'"
    User USER
    IdentityFile /path/to/identity/file
    Hostname %h.fully.qualified.domain.name

Тестування потрібно проводити з чимось складним, як це. І для цього тестування ви телефонуєте ssh -vvv HOSTNAME. Що точно покаже, що відбувається, і чи Matchправильно виконано ваше нове .


0

Розширення відповіді від Тревор:

Можливі foo123.123і більш складні хости, як, наприклад, відповідність і foo10.10за одним правилом БЕЗ наявності записів DNS для використаних імен хостів:

Match exec "echo %h | grep -q 'foo[0-9]\+.[0-9]\+$'"
    Port 1234 # just to show it can be paired with non-default ports too,
              # see %p in man ssh_config
    ProxyCommand /usr/bin/nc 10.10.$(echo %h | sed -e 's/foo//') %p

Використання ProxyCommand для маніпулювання вмістом% h із оболонкою та підключення до правого порту через netcat. Таким чином можна створити пресети для категорії хостів, не створюючи окремих записів.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.