Назад | Перейти на главную страницу

Включение мультиплексирования SSH для серии команд и его закрытие

Я пытаюсь создать мультиплексные соединения ssh для серии команд, которые выполняются последовательно, а затем, после завершения серии команд, закрыть сеанс мультиплексирования.

Согласно документации, первое подключение должно запустить мастер управления:

ssh -o "ControlMaster=auto" -S /home/justin/.ssh/sockets/multiplex_ssh.sock justin@1.2.3.4 "uptime"

Затем нужно передать остальные команды:

ssh -S /home/justin/.ssh/sockets/multiplex_ssh.sock justin@1.2.3.4 "free -m"
ssh -S /home/justin/.ssh/sockets/multiplex_ssh.sock justin@1.2.3.4 "hostname"
ssh -S /home/justin/.ssh/sockets/multiplex_ssh.sock justin@1.2.3.4 "date"

Наконец, чтобы закрыть мультиплексный сеанс ssh, я должен сделать:

ssh -O exit -S /home/justin/.ssh/sockets/multiplex_ssh.sock justin@1.2.3.4

К сожалению, первая запущенная команда ssh ControlMaster=auto не сохраняет активным сокет в каталоге /home/justin/.ssh/sockets при передаче команды ssh. Вместо этого он немедленно закрывает сокет.

Как это возможно?

Похоже, вы забыли установить ControlPersist. Если не установлен, то главное соединение не останется открытым после закрытия первого сеанса.

Например, вы можете установить в своем $HOME/.ssh/config:

ControlPersist 600