ssh: ProxyCommand через постоянное соединение ControlMaster

ssh: ProxyCommand через постоянное соединение ControlMaster

У меня есть два сервера, 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, будет повторно использовать существующее, постоянное подключение.

Связанный контент