OpenSSH отключить ControlMaster для данного имени хоста
Я использую OpenSSH_5.9p1, OpenSSL 0.9.8r 8 Feb 2011
с Mac OS X Snow Leopard. я имею ControlMaster
функция настроена для поддержания постоянных соединений. мой ~/.ssh/config
иметь следующее:
Host *
ControlPath /ms/%r@%h:%p
ControlMaster auto
ControlPersist 4h
Host *.unfuddle.com
ControlMaster no
Однако из того, что я вижу, - даже когда я пытаюсь использовать SSH для хостов unfuddle.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 тип -1 debug1: идентификационный файл /Users/akhkharu/.ssh/id_dsa type 2 debug1: идентификационный файл /Users/akhkharu/.ssh/id_dsa-cert тип -1 debug1: идентификационный файл /Users/akhkharu/.ssh/id_ecdsa тип -1 debug1: идентификационный файл /Users/akhkharu/.ssh/id_ecdsa-cert тип -1 debug1: удаленный протокол версии 2.0, удаленная версия программного обеспечения OpenSSH_5.8 debug1: соответствие: OpenSSH_5.8 pat OpenSSH* debug1: включение режима совместимости для протокола 2.0 debug1: строка локальной версии SSH-2.0-OpenSSH_5.9 debug1: SSH2_MSG_KEXINIT отправлено debug1: SSH2_MSG_KEXINIT получил отладку1: kex: сервер-> клиент aes128-ctr hmac-md5 нет отладка1: kex: клиент-> сервер aes128-ctr hmac-md5 нет отладка1: отправка SSH2_MSG_KEX_ECDH_INIT отладка1: ожидание сервера SSH2_MSG_KEX_YG: RPG: Debug1: ожидающий SSH2_MSG_KEX_YSP: дебит: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: новый [контроль мультиплексора] 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: ответ о статусе канала 2-го типа 0 debug1: client_input_channel_req: канал 2 ответ клиента типа eow@openssh.com 2: свободный канал: ответ 2: свободный: debug1 сеанс, nchannels 3, debug1: канал 1: свободный: управление мультиплексором, nchannels 2 Совместное подключение к droolit.unfuddle.com закрыто.
[andrey-mbp ~] $ ll / мс / всего 0 srw------- 1 akhkharu admin 0B 17 июля 11:55 git@droolit.unfuddle.com:22
Спасибо,
Андрей.
3 ответа
Ваш *
принимающая строфа ловит его. Поставьте более конкретные разделы хоста ранее.
Как описано в ответе на мой аналогичный вопрос о SuperUser, вы можете использовать синтаксис "взрыва", чтобы исключить определенные хосты из оригинала Host *
строфа, вот так:
Host * !*.unfuddle.com
ControlPath /ms/%r@%h:%p
ControlMaster auto
ControlPersist 4h
В моей ситуации я обнаружил, что порядок Host
разделы при использовании Host *
казалось неуместным, но вышеописанный метод всегда работает.
Для меня это работает, когда я дополнительно установить ControlPath
в none
в пределах host
строфа.
Ты можешь попробовать:
Host *.unfuddle.com
ControlMaster no
ControlPath none
Тогда сессия управления не будет сгенерирована.