-1

У меня есть файл конфигурации ssh, который выглядит примерно так:

(a bunch of specific entries)

Host appserver.*.*.foo.in
ControlMaster no

Host *
ForwardAgent yes
ControlMaster auto
ControlPath ~/.ssh/sockets/%r@%h-%p
ControlPersist 300

К сожалению, если я пытаюсь подключиться через что-то вроде

ssh dev.guid-1234-1234-1234@appserver.dev.guid-1234-1234-1234.foo.in -p 2222

Я получаю сообщение об ошибке слишком длинного пути управления. Что сбивает с толку, так как я намеренно отключаю ControlMaster, чтобы избежать этой проблемы в более конкретной статье ssh, ранее в моем файле конфигурации.

Почему этот параметр конфигурации игнорируется?

1 ответ1

0

ControlMaster контролирует, будет ли экземпляр ssh хозяином элемента управления, а не использует ли он вообще элемент управления. Справочная страница ssh_config говорит об этом частично:

ControlMaster
...Когда установлено «да», ssh(1) будет прослушивать соединения в контрольном сокете, указанном с помощью аргумента ControlPath. Дополнительные сеансы могут подключаться к этому сокету, используя тот же ControlPath с ControlMaster, установленным в «нет» (по умолчанию). Эти сеансы будут пытаться повторно использовать сетевое соединение главного экземпляра, а не инициировать новые, но будут возвращаться к нормальному соединению, если сокет управления не существует или не прослушивает.

Другими словами, "ControlMaster no" все еще позволяет ssh использовать существующий сокет управления, если таковой существует. Так что он все равно будет интерпретировать ControlPath и искать сокет управления.

Если вы хотите отключить функцию управления для экземпляра ssh, задайте для ControlPath значение none, как описано на странице руководства.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .