Зупиніть налаштування ssh на першому матчі


18

У моєму .ssh-конфігурації я додав локальний проксі-сервер для всіх моїх хостів, однак я хочу вкласти в свій локальний vm без команди proxy. Вихід з моєї сш:

debug1: /Users/bbarbour/.ssh/config line 1: Applying options for local.dev
debug1: /Users/bbarbour/.ssh/config line 65: Applying options for *

З огляду на наступну конфігурацію ssh, як я можу запобігти застосуванню ProxyCommand до запису local.dev?

Host local.dev
    HostName dev.myserver.com
    User developer
...
Host *
    ProxyCommand /usr/local/bin/corkscrew 127.0.0.1 8840 %h %p

Відповіді:


22

Ви можете виключити local.dev з ProxyCommand, використовуючи !перед цим:

Host * !local.dev
    ProxyCommand /usr/local/bin/corkscrew 127.0.0.1 8840 %h %p

З документації на ssh_config :

Якщо надано більше одного шаблону, їх слід розділити пробілом.

Запис шаблону може бути відхилено, додавши до нього знак оклику (`! ') . Якщо заперечений запис збігається, то запис хост ігнорується, незалежно від того, чи відповідають інші шаблони лінії. Тому відповідні відповідні матчі корисні, щоб надати винятки для матчів підстановки.

У документації також сказано:

Для кожного параметра буде використано перше отримане значення . Файли конфігурації містять розділи, розділені специфікаціями `` Хост '', і цей розділ застосовується лише для хостів, які відповідають одному з шаблонів, наведених у специфікації. Зібране ім'я хоста - це те, яке вказано в командному рядку.

Отже, ви також можете вимкнути ProxyCommand для local.dev шляхом переопределення значення, яке ви визначили в Host *:

Host local.dev
    HostName dev.myserver.com
    User developer
    ProxyCommand none

8

Параметр у конфігураційному файлі застосовується при першому збігу. Оскільки у хост-записі у вас немає жодного ProxyCommand, той, який використовується у вашому *записі, буде використаний.

Існує два способи подолати це:

  • Для хостів, де ви не хочете використовувати команду проксі, просто додайте рядок
    ProxyCommand немає
  • Щодо *запису, зауважте, зокрема, що запис не повинен стосуватися хоста local.dev, відкидаючи його а!
    Ведучий! Local.dev *

для розділення кількох хостів використовуйте простір. кома (,) не працювала для мене. Ідентифікатор дистриб'ютора: Ubuntu Опис: Ubuntu 17.10 Випуск: 17.10 Кодове ім'я: artful
Aruna

Дякую @ArunaFromLK - я не можу повірити, що я пропустив це, і що ніхто більше цього не помітив за 3,5 роки! Зараз я оновив відповідь.
Дженні Д
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.