Я хочу подключиться к группе машин, используя конкретную машину с использованием SSH туннелирования. Но во всех найденных решениях мне нужно указать запись для каждой машины в моем конфигурационном файле ssh. Я хотел бы использовать подстановочный знак таким образом:

   Host *.mydomain.com
   // some magic here

На данный момент лучшее решение было найдено:

http://magazine.redhat.com/2007/11/27/advanced-ssh-configuration-and-tunneling-we-dont-need-no-stinking-vpn-software/

1 ответ1

1

Если вы можете запускать такие программы, как nc или netcat или socat на своем туннельном сервере, вы можете использовать ProxyCommand вместо перенаправления портов:

# Only necessary if it matches the *.mydomain.com wildcard. Useless otherwise.
Host tunnelbox.mydomain.com
    ProxyCommand none

Host *.mydomain.com
    ProxyCommand ssh tunnelbox.mydomain.com nc %h %p
    #ProxyCommand ssh tunnelbox.mydomain.com ncat %h %p
    #ProxyCommand ssh tunnelbox.mydomain.com socat stdio tcp:%h:%p
    #ProxyCommand ssh tunnelbox.mydomain.com netcat %h %p

Раскомментируйте соответствующую ProxyCommand в зависимости от того, какие инструменты установлен туннельным сервером.


Обратите внимание, что при этом будет установлено и разорвано отдельное соединение SSH для каждого установленного туннеля, что означает, что соединение будет медленнее, чем через SOCKS. (Однако это не повлияет на производительность после подключения.)

Если ваша версия SSH поддерживает это, вы можете включить мультиплексирование соединений:

Host tunnelbox.mydomain.com
    ControlMaster no
    ControlPath none

Host *.mydomain.com
    ControlMaster auto
    ControlPath ~/.ssh/S.%l.%r@%h:%p
    ControlPersist 10m

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .