Как ускорить несколько ssh соединений к одному хосту

Очень часто, когда работаешь с каким-либо сервером, приходится открывать много терминалов и соединяться в каждом из них с этим сервером.

В одном окошке логи посмотреть, в другом конфигурацию подправить, в третьем - перезапускать какого-то демона ;)

И если сервер при этом запрашивает пароль - то все, беда. В каждом из окон придется его вводить.

Оказывается, ssh имеет возможность это оптимизировать ;)

Открываете ~/.ssh/config и добавляете строки

Host *
ControlMaster auto
ControlPath ~/.ssh/master-%r@%h:%p

И все :)

Эта настройка приводит к тому, что ssh клиент кроме соединения к удаленному хосту будет слушать так же и локальный сокет. Все последующие клиенты ssh будут сперва проверять наличие этого сокета и только потом пытаться соединиться по сети с удаленным хостом. Если же локальный сокет есть - то последующие соединения будут использовать его, а не устанавливать соединение сами. Таким образом несколько ssh сессий разделяют одно и тоже TCP соединение.

Все подробности в man ssh_config (5) и в man ssh по строке  Control :)

Если какой-то из хостов не поддерживает эту функцию протокола (а это ssh v4), то для него эту конфигурацию можно отключить

Host very-old-server.com
ControlMaster no

ssh -M user@host соединяется в режиме ‘мастера’ и спрашивает пароли и все что положено :)

Чуть подробней и на английском на linux.com

Понравилось? Подпишись на RSS!

Хочешь написать статью? Мы ищем авторов (и не только за красивые глаза, но и за дохлых президентов).

3 Responses to “Как ускорить несколько ssh соединений к одному хосту”


  1. 1 Slash

    А чем плох, например screen, для открытия нескольких “окон/сессий” ?

  2. 2 Gaspar Chilingarov

    1. невозможно поставить несколько разных фонтов/размеров терминала
    2. screen безбожно портит/уничтожает скролл :)
    3. иногда нужно иметь несколько окошек, в одном запускаем процесс, в другом - tail -f log и смотрим, что оно пишет в лог. в случае screen невозможно будет одновременно смотреть. ну или придется делать split экрана, а потом между ними переключаться. лично мне удобней мышку перекинуть в соседнее окошко ;) и обыкновенно окошко с логом - оно мелким фонтом, чтоб больше влезло-бы, а окошко с основным терминалом - крупнее :)

Leave a Reply