Давно чув про сабж, ось видалась нагода спробувати. Ідея: припустимо, нам
потрібно декілька SSH-з'єднань з тим самим сервером; замість того щоб створювати
для кожного з'єднання окремий SSH-сеанс, створюється один головний процес і всі
з'єднання йдуть через нього.
Переваги: лише один handshake -- зменшення трафіку та прискорене встановлення
з'єднань. На сервері створюється лише один процес sshd -- заощаджує ресурси.
Навіть за невеликої кількості з’єднань вже можна побачити прискорення. Мій
скрипт виконує 8 віддалених команд. Варіант зі спільним з'єднанням працює в 1,5
рази швидше.
micro-HOWTO:
# Створення головного процесу
ssh -N -M -S /tmp/%r@%h:%p user@example.com
(без -N працює як командна оболонка)
# Віддалена командна оболонка
ssh -o ControlPath=/tmp/%r@%h:%p user@example.com
# Віддалене виконання команди echo
ssh -n -o ControlPath=/tmp/%r@%h:%p user@example.com echo
# -O керує головним процесом
ssh -O exit -o ControlPath=/tmp/%r@%h:%p user@example.com
ssh -O check -o ControlPath=/tmp/%r@%h:%p user@example.com
Тут
http://protempore.net/~calvins/howto/ssh-connection-sharing/ можна почитати,
як це все настроїти у файлі конфігурації.