У меня есть два сервера, middle
и remote
. middle
используется как прокси для доступа к remote
. Я настроил middle
конфигурацию ssh так, чтобы она сохраняла соединения remote
через ControlMaster, как показано ниже
Host remote ControlMaster auto ControlPath ~/.ssh/%r@%h:%p ControlPersist yes
Я создал постоянное соединение middle
с remote
. Это удобно, так как аутентификация на remote
сложна.
Я хотел бы настроить локальную конфигурацию SSH, чтобы иметь возможность подключаться по SSH с локального хоста remote
через middle
,повторное использование созданного выше соединения. Я могу сделать это вручную как ssh -t middle ssh remote
, но не могу придумать, как сделать то же самое с помощью параметра ProxyCommand, что особенно раздражает, если я хочу перенести файл в remote
.
ProxyCommands, которые не работают, включают в себя
ssh middle -W remote:22
(не использует повторное соединение)ssh middle -t remote
(переходит в оболочку, сбивая с толку моего локального клиента ssh, который ожидает взаимодействия с sshd, а не с оболочкой)
решение1
Я думаю, вы не понимаете весь механизм ControlMaster в ssh. Идея в том, что соединение повторно используется на ЛОКАЛЬНОЙ СИСТЕМЕ, то есть на "среднем" сервере. Так что, по сути, для повторного использования соединения вам нужно будет вызвать ssh-клиент на "среднем". Вот так:
ssh средний "ssh удаленный"
Это сначала подключит вас к "middle", а затем запустит там ssh-клиент, чтобы подключить вас к "remote". Второе подключение, при правильной настройке ControlMaster, будет повторно использовать существующее, постоянное подключение.