Думаю каждый кто использовал RSA-ключи по работе представляет себе какие это муки приходя на работу открывать 100500 коннектов к одному и тому же серверу. Утомительное занятие, не правда ли? На днях подсказали как можно ускорить все это дело, чему был безумно рад и с вами хочу поделиться. Подробности под катом.
В OpenSSH версии 4.0 была представлена функция ControlMaster, если коротко об этой функции то… При первом подключении к нашему хосту создается мастер подключение, а все последующие подключения выступают в роли клиента подключающемуся к этому мастеру. Получается некое мультиплексирование подключения.
Что для этого нужно? Идем в ~/.ssh/config и дописываем к нашему хосту/хостам 3 строки:
ControlMaster auto
ControlPersist 60
ControlPath ~/.ssh/cm_socket/%r@%h:%p
Пройдемся по ним:
ControlMaster - разрешает несколько подключений через одно, а параметр ‘auto’ говорит о том что будет создаваться новый сокет, если таковой не будет найден;
ControlPersist - после того как мы разрываем подключение мастер остается работать в фоне и только спустя 60 сек. он закрывается и удаляет сокет, это дает нам время чтобы в течении некоторого времени подключиться к нашему серверу если случайно закрыли сессию;
ControlPath - путь куда будут складываться сокеты с именем имя_пользователя@хост:порт.
В итоге вот что должно получиться:
Host myhost
Hostname myhost.domain.com
Port 22
User user
ControlMaster auto
ControlPersist 60
ControlPath ~/.ssh/cm_socket/%r@%h:%p
Итого, после того как наберем:
ssh myhost
Мы начнем подключаться к нашему хосту вводя как обычно пароль, но вот после подключения мы можем зайти в ~/.ssh/cm_socket и увидеть созданный мастер сокет нашего подключения:
$ ls ~/.ssh/cm_socket/
user@myhost.domain.com:22
Теперь все последующие подключения будут обращаться уже к мастеру и ничего вводить не потребуется, кстати если заметите после подключения будет выводиться вот такое сообщение:
NOTE: 2013-01-08 Enabled ssh connection multiplexing (ControlMaster) globally to speedup multiple logins to the same host, To disable run ssh with the "-S none" option
Напоследок даю пример конфига для screen‘a, который позволит открыть сразу несколько закладок с подключением к нужному хосту:
screen -t myhost1 1 ssh myhost1
screen -t myhost2 2 ssh myhost2
screen -t myhost2 3 ssh myhost2
и для tmux‘a:
new -n myhost1 'ssh myhost1'
neww -n myhost2 'ssh myhost2'
neww -n myhost2 'ssh myhost2'