Очень часто, когда работаешь с каким-либо сервером, приходится открывать много терминалов и соединяться в каждом из них с этим сервером.
В одном окошке логи посмотреть, в другом конфигурацию подправить, в третьем - перезапускать какого-то демона ;)
И если сервер при этом запрашивает пароль - то все, беда. В каждом из окон придется его вводить.
Оказывается, 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!
Хочешь написать статью? Мы ищем авторов (и не только за красивые глаза, но и за дохлых президентов).

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