OpenSSH відключить ControlMaster для даного імені хоста


20

Я використовую OpenSSH_5.9p1, OpenSSL 0.9.8r 8 Feb 2011Mac OS X Snow Leopard. У мене є ControlMasterфункція, налаштована на підтримку постійних з'єднань. У мене ~/.ssh/configє таке:

Host *
  ControlPath /ms/%r@%h:%p
  ControlMaster auto
  ControlPersist 4h

Host *.unfuddle.com
  ControlMaster no

Однак, з того, що я бачу - навіть коли я намагаюся використовувати SSH для хостів unuddle.com, майстерне з'єднання завжди створюється:

[andrey-mbp ~] $ ssh -v git@droolit.unfuddle.com
OpenSSH_5.9p1, OpenSSL 0.9.8r 8 лютого 2011 р
debug1: зчитування даних конфігурації /Users/akhkharu/.ssh/config
debug1: /Users/akhkharu/.ssh/config рядок 1: Застосування параметрів для *
debug1: /Users/akhkharu/.ssh/config рядок 6: Застосування параметрів для * .unfuddle.com
debug1: зчитування даних конфігурації /usr/local/Cellar/openssh/5.9p1/etc/ssh_config
debug1: auto-mux: спробу існуючого майстра
debug1: Розетка управління "/ms/git@droolit.unfuddle.com:22" не існує
debug1: Підключення до порту droolit.unfuddle.com [174.129.5.196] 22.
debug1: З'єднання встановлено.
debug1: файл посвідчення /Users/akhkharu/.ssh/id_rsa тип 1
debug1: файл посвідчення /Users/akhkharu/.ssh/id_rsa-cert type -1
debug1: файл посвідчення /Users/akhkharu/.ssh/id_dsa тип 2
debug1: файл посвідчення /Users/akhkharu/.ssh/id_dsa-cert type -1
debug1: файл посвідчення /Users/akhkharu/.ssh/id_ecdsa тип -1
debug1: файл посвідчення /Users/akhkharu/.ssh/id_ecdsa-cert type -1
debug1: Віддалений протокол версії 2.0, віддалена версія програмного забезпечення OpenSSH_5.8
debug1: match: OpenSSH_5.8 pat OpenSSH *
debug1: Увімкнення режиму сумісності для протоколу 2.0
debug1: рядок локальної версії SSH-2.0-OpenSSH_5.9
debug1: SSH2_MSG_KEXINIT надіслано
debug1: отримано SSH2_MSG_KEXINIT
debug1: kex: server-> client aes128-ctr hmac-md5 none
debug1: kex: client-> сервер aes128-ctr hmac-md5 none
debug1: відправлення SSH2_MSG_KEX_ECDH_INIT
debug1: очікує SSH2_MSG_KEX_ECDH_REPLY
debug1: ключ хоста сервера: RSA a6: 74: 33: 36: 95: 31: 6e: a6: d7: 71: 87: b8: 3c: 38: e2: 60
debug1: Хост 'droolit.unfuddle.com' відомий і відповідає головному ключу RSA.
debug1: знайдено ключ у /Users/akhkharu/.ssh/known_hosts:390
debug1: ssh_rsa_verify: підпис правильний
debug1: SSH2_MSG_NEWKEYS надіслано
debug1: очікує SSH2_MSG_NEWKEYS
debug1: отримано SSH2_MSG_NEWKEYS
debug1: Роумінг заборонено сервером
debug1: SSH2_MSG_SERVICE_REQUEST надіслано
debug1: отримано SSH2_MSG_SERVICE_ACCEPT
debug1: Автентифікації, які можуть продовжуватися: publickey
debug1: Наступний метод аутентифікації: publickey
debug1: Пропозиція відкритого ключа RSA: /Users/akhkharu/.ssh/id_rsa
debug1: Сервер приймає ключ: pkalg ssh-rsa blen 277
debug1: Аутентифікація успішна (publickey).
Аутентифіковано на droolit.unfuddle.com ([174.129.5.196]: 22).
debug1: настройка мультиплексного головного сокета
debug1: канал 0: новий [/ms/git@droolit.unfuddle.com:22]
debug1: control_persist_detach: основний процес фонового зображення
debug1: відкидання до фону
debug1: введення інтерактивного сеансу.
debug1: підключення керування мультиплексуванням
debug1: канал 1: новий [mux-контроль]
debug1: канал 2: новий [клієнт-сеанс]
debug1: Remote: Примусова команда.
debug1: Remote: переадресація портів відключена.
debug1: Remote: X11 переадресація відключена.
debug1: Remote: переадресація агента вимкнена.
debug1: Remote: Виділення Pty вимкнено.
debug1: Remote: Примусова команда.
debug1: Remote: переадресація портів відключена.
debug1: Remote: X11 переадресація відключена.
debug1: Remote: переадресація агента вимкнена.
debug1: Remote: Виділення Pty вимкнено.
debug1: mux_client_request_session: головний ідентифікатор сесії: 2
Помилка запиту на розподіл PTY
Потрібен SSH_ORIGINAL_COMMAND
debug1: client_input_channel_req: відповідь rtype каналу 2 відповідь 0
debug1: client_input_channel_req: канал 2 rtype eow@openssh.com відповідь 0
debug1: канал 2: безкоштовно: клієнт-сесія, nchannels 3
debug1: канал 1: безкоштовно: mux-контроль, nchannels 2
Спільне з'єднання з droolit.unfuddle.com закрите.
[andrey-mbp ~] $ ll / мс /
всього 0
srw ------- 1 адміністратор akhkharu 0B 17 липня 11:55 git@droolit.unfuddle.com: 22

Спасибі,
Андрій.

Відповіді:


19

Ваша *хазяйська строфа її ловить. Поставте більш конкретні хост-строфи раніше.


Дякую, але це не допоможе мені. Мені потрібен ControlMaster увімкнено для всіх хостів, але не для unsuddle.com. Я не можу перерахувати всі хости, які я використовую у конфігураційному файлі. Що, здається, працює - це розміщення правила для uneuddle.com на самому початку.
Андрій Черних

8
Ви маєте на увазі ... коли ви ставили більш конкретні строфи хостів раніше?
Ігнасіо Васкес-Абрамс

Так, це дивно, але це працює.
Андрій Черних

Я шукав мапажі протягом віків, але це дивно пріоритетна річ!
JanKanis

1
Я боюся, що до свого вмираючого дня я буду замислюватися про те, чи Андрій коли-небудь причепився до того, що ця відповідь правильна, і що коментар, з яким він погодився, підкреслив це.
надзвичайно суперіорман

10

Як описано у відповіді на мій аналогічний запитання про SuperUser , ви можете використовувати синтаксис "вибух", щоб виключити конкретні хости з початкової Host *строфи, наприклад:

Host * !*.unfuddle.com
    ControlPath /ms/%r@%h:%p
    ControlMaster auto
    ControlPersist 4h

У моїй ситуації я виявив, що порядок Hostрозділів при використанні Host *здається неактуальним, але описаний вище метод завжди працює.


5

Для мене це працює , коли я додатково встановити ControlPathв noneмежах hostстрофи.

Ви можете спробувати:

Host *.unfuddle.com   
    ControlMaster no
    ControlPath none

Тоді ніякий сеанс управління не буде генеровано.


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