Я хотел бы заставить вторичное ssh-соединение (я) использовать существующее соединение ControlMaster и потерпеть неудачу, если мастер отсутствует.
При ssh -o ControlPath=somewhere -o ControlMaster=no ...
это новое соединение будет искать существующего мастера и, если оно не найдено, отступит к созданию своего собственного автономного соединения. Можем ли мы просто отключить запасной вариант?
Самое близкое, что я могу придумать, это
ssh -o ControlPath=somewhere -o ControlMaster=no -O check \
&& ssh -o ControlPath=somewhere -o ControlMaster=no
Я что-то пропустил?
Зачем?
Распространенный для меня случай, когда ssh
требует некоторого взаимодействия с OTP или аппаратной штукой. Обычно я работаю с несколькими терминалами, каждый из которых работает, например while sleep 1; do ssh-and-reconnect-to-a-screen-session ; done
В моем идеальном мире было бы одно мастер-соединение (с проверкой OTP/ токена), тогда каждый другой терминал работал бы в цикле и отказывал до тех пор, пока не смог соединиться с управляющим мастером.
Так как это (в зависимости от ~ случайного порядка, что предыдущие подключения не выполняются и повторяются), открытие крышки ноутбука переносит меня сразу на несколько проверок OTP/ токенов, потому что каждая команда ssh
хочет быть / новым хозяином.
(Опять же, в идеальном мире mosh
мог бы решить проблему «где я остановился», но здесь это не вариант)-: