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