[MLUG] SSH: несколько сессий по одному соединению

Oleg Broytmann phd на phd.pp.ru
Пт Май 16 14:36:00 MSD 2008


On Sun, May 11, 2008 at 03:46:59PM +0400, Oleg Broytmann wrote:
> Узнал, что ssh позволяет осуществлять connection sharing - пускать
> несколько сессий по одному соединению TCP/IP. Достоинства такого подхода
> - не надо создавать новое соединение TCP для каждого клиента; не надо
> выполнять аутентификацию; т.о. вторая и последующая сессии инициализируются
> гораздо быстрее. Удобно при частом использовании scp и rsync - открываю
> окно с ssh на сервер, и быстро запускаю столько клиентов scp или rsync,
> сколько надо; потом ненужное окно ssh можно закрыть.
> 
> В интернете полно информации:
> http://www.google.com/search?hl=ru&q=ssh+ControlPath&btnG=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA&lr=lang_ru
> 
>    Подробную документацию ищите в man ssh_config, описание опций
> ControlMaster и ControlPath.
> 
>    Я добавил в ~/.ssh/config настройки:
> 
> ControlMaster auto
> ControlPath ~/.ssh/.%r@%h:%p
> 
>    ControlMaster auto означает, что первый запущенный клиент откроет
> сессию, а все прочие будут пользоваться этой созданной сессией; в случае
> попытки завершения первой сессии первый клиент будет ждать завершения всех
> остальных сессий.
> 
>    Я использовал все 3 рекомендуемых макроса, потому что я использую
> ssh/scp/rsync со многими серверами.

   Недостатки: последующие сессии наследуют некоторые свойства мастера,
например, agent forwarding. В случае падения ssh, ОС или компьютера файл
unix socket необходимо удалять вручную; когда я с этим столкнулся,
я изменил ControlPath на ~/.ssh/controls/%r\@%h:%p и добавил в свой
crontab

@reboot rm -f .ssh/controls/*

Oleg.
-- 
     Oleg Broytmann            http://phd.pp.ru/            phd на phd.pp.ru
           Programmers don't die, they just GOSUB without RETURN.


Подробная информация о списке рассылки MLUG