Я пытаюсь создать мультиплексные соединения 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