Включение мультиплексирования 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. Вместо этого он сразу же закрывает сокет.

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

1 ответ

Решение

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

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

ControlPersist 600
Другие вопросы по тегам