11

Иногда я получаю эту ошибку, когда я пытаюсь ssh на удаленный хост:

mux_client_request_session: read from master failed: Broken pipe

Я использую Macbook Air OS X Lion с этим в ~/.ssh/config:

ControlMaster auto
ControlPath /tmp/ssh_mux_%h_%p_%r

ControlPersist 4h

ForwardAgent yes

Host [ex]
    HostName [example.com]
    User [somedude]

Ошибка выше происходит, когда я делаю:

ssh ex

Терминал зависает в течение ~ 1 минуты, а затем отображает:

mux_client_request_session: read from master failed: Broken pipe
somedude@example.com's password:

Я ввожу свой пароль, и все в порядке. И если я открою еще одну вкладку «Терминал», то все в порядке. Как я могу это исправить? Это не страшно, но раздражает.

1 ответ1

13

У вас включен ControlPersist . Мое обоснованное предположение заключается в следующем:

  1. У вас есть подключение к example.com
  2. Выйдите из системы, но поскольку ControlPersist включен, сеанс остается открытым для будущих подключений.
  3. Что-то идет не так с вашим сетевым подключением, и, следовательно, постоянные разрывы соединения.
  4. При повторном запуске ssh somedude@example.com он пытается повторно использовать соединение, начиная с шага 2, и открывает новое соединение по истечении времени ожидания.

По словам man ssh_config отдельная опция для этого тайм-аута недоступна. Чтобы избежать этого, не используйте ControlPersist . Кроме того, я настоятельно рекомендую использовать открытый ключ, если это возможно. У вас все еще может быть фраза-пароль для вашего открытого ключа, но открытый ключ эффективно предотвращает взлом вашего пароля через SSH-соединение.

Кроме того, вы не должны хранить контрольные файлы в /tmp . Они должны / должны быть защищены, и для этого, например, ~/.ssh/master/ssh_mux_%h_%p_%r - это лучшее расположение. Конечно, если вы единственный пользователь своего ноутбука (?), Это не слишком большая проблема.

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