Я создаю небольшой скрипт для обновления некоторых удаленных серверов (2+)
Я делаю несколько подключений к каждому серверу; есть способ, которым я могу повторно использовать SSH-соединения, поэтому мне не нужно открывать слишком много сразу?Как повторно использовать ssh-соединение
ответ
Если открыть первое соединение с -M
:
ssh -M $REMOTEHOST
последующие подключения к $REMOTEHOST
будет «контрейлерных перевозок» на соединения, установленного мастером ssh
. Наиболее заметно, что дальнейшая аутентификация не требуется. См. man ssh_config
в разделе «ControlMaster» для получения более подробной информации. Используйте -S
, чтобы указать путь к общему сокету; Я не уверен, что такое по умолчанию, потому что вместо этого я настраиваю совместное использование соединений с помощью файла конфигурации.
В моем .ssh/config
файл, у меня есть следующие строки:
host *
ControlMaster auto
ControlPath ~/.ssh/ssh_mux_%h_%p_%r
Таким образом, я не должен забывать использовать -M
или -S
; ssh
указывает, существует ли уже существующее соединение для комбинации хоста/порта/имени пользователя и использует это, если это возможно.
Beautiful. Именно то, что я искал. Я проверю и вернусь и подтвержу. – onassar
По-прежнему существует разрыв связи. Это ожидалось? Я предполагаю, что для последующих соединений не нужен флаг '-M'? – onassar
Я забыл упомянуть опцию '-S' для других соединений, поэтому они знают, с каким мастером подключиться. Я обновлю ответ. – chepner
В качестве альтернативы, вы можете сделать это следующим образом:
$ssh_conn="ssh -t -o ControlPath=~/.ssh/master-$$ -o ControlMaster=auto -o ControlPersist=60"
$ssh_conn [email protected]
ControlPath=~/.ssh/master-$$
устанавливает путь управления для подключения SSH ControlMaster=auto
позволяет сеанс соединения для совместного использования с помощью ControlPath
ControlPesist=60
устанавливает количество времени на соединение должно оставаться открытым из-за неактивности
Я предпочитаю метод, описанный в Labs Puppet https://puppetlabs.com/blog/speed-up-ssh-by-reusing-connections
Добавьте эти строки в ~/.ssh/config
и запустить mkdir ~/.ssh/sockets
Host *
ControlMaster auto
ControlPath ~/.ssh/sockets/%[email protected]%h-%p
ControlPersist 600
Читайте полный пост блога для более полезной информации о том, что они делают и идиосинкразии SSH при использовании, как это. Я настоятельно рекомендую прочитать блог, или вы можете обнаружить, что все работает не так, как вы ожидаете.
- 1. Как повторно использовать ViewController
- 2. Как повторно использовать event.preventDefault?
- 3. Как «повторно использовать» поток?
- 4. Как повторно использовать HierarchicalDataTemplate?
- 5. Как повторно использовать переменную
- 6. Как повторно использовать ostringstream?
- 7. Как повторно использовать drawable
- 8. Как повторно использовать org.restlet.resource.ClientResource
- 9. Как повторно использовать поведение?
- 10. Как повторно использовать UITableViewCells
- 11. Как повторно использовать свойства
- 12. Как повторно использовать атрибут
- 13. Как повторно использовать функцию?
- 14. Как повторно использовать селектор jQuery?
- 15. Как повторно использовать итератор SplitWhitespace?
- 16. Как повторно использовать реакцию таблицы
- 17. Как повторно использовать JSON объект
- 18. как повторно использовать функцию, Jquery
- 19. Recycleviewer - Как повторно использовать макет?
- 20. Как повторно использовать псевдокласс меньше?
- 21. Как повторно использовать часть запроса
- 22. Как повторно использовать объект StringTokenizer
- 23. Как повторно использовать код drawRect?
- 24. Python: как использовать повторно {N}
- 25. Java: как повторно использовать прослушиватели
- 26. Как не использовать повторно UIContentViewCell
- 27. Как повторно использовать фильтр Kibana?
- 28. Android, как повторно использовать Socket?
- 29. Как повторно использовать экземпляр hashlib.md5
- 30. как повторно использовать данные json
Вы должны добавить дополнительную информацию о том, как вы создаете соединения, чтобы получить лучший ответ: на каком языке, на какой платформе, с какой библиотекой и т. Д. –
Задумывались ли вы об использовании каких-либо положений, таких как марионетка, шеф-поваром или солью? – Femaref
У меня есть пара серверов за балансиром нагрузки. У меня есть основной скрипт сборки, работающий нормально; Я не хочу идти слишком далеко вниз по кроличьей норе, если у меня есть работы. Я открываю соединение для обновления определенного файла, открываю соединение с git pull, merge и т. Д. И т. Д., А затем открываю третий, чтобы обновить другой файл. – onassar