SSH ProxyКоманда одному хосту связаться с другим

SSH ProxyКоманда одному хосту связаться с другим

В нашей среде у нас есть 2 сервера jumphost, на которых мы пытаемся получить доступ и запустить команду ssh на удаленном сервере, у нас есть файл ssh/config для каждого местоположения. С помощью sshproxy мы попадаем на сервер Jump2. Мы хотим объединить файл конфигурации, чтобы иметь доступ ко всем серверам местоположений одновременно.

См. ниже ENV
Ноутбук --------> Jumphost1 ---------> Jumphost2 --------->Удаленный сервер

На самом деле мы планируем запустить скрипт с моей локальной машины и сохранить вывод на локальной машине. Поэтому для архивации этой задачи нам нужно подключиться по ssh к 2 jumphost и выполнить следующую команду на удаленном сервере, которая запустит скрипт с локальной машины и получит вывод на самой локальной машине.

Jump1 доступен через порт 2222, пользователь будет тем же пользователем

но для доступа к удаленному серверу есть другой пользователь1

ssh user1@ip < ./script >> file.txt &&

Настройте ваш ~/.ssh/config:

Хост Jump1 Пользователь jump1user Порт 2222 Хост Jump2 ProxyCommand ssh -W %h:%p Jump1 Пользователь jump2user Хост RemoveServer ProxyCommand ssh -W %h:%p Jump2 Пользователь remoteUser

С этим файлом выше мы можем напрямую войти на сервер jump2 без каких-либо проблем. Но нам придется менять файл конфигурации каждый раз для каждого местоположения.

Для запуска приведенного ниже примера команды ssh в скрипте для сбора информации из каждого региона нам понадобится один файл конфигурации.

Пример

ssh jump2 | ssh user1@remoteserver-ip < ./script >> file.txt &&

решение1

Надеюсь, этот пример позволит вам использовать всего один файл:

Host *
    User username
    IdentityFile /home/username/.ssh/identity

Host some*
    ProxyCommand /usr/bin/ssh -p 2222 username@jumphost /usr/bin/nc %h %p 2> /dev/null

Host other*
    ProxyCommand /usr/bin/ssh -p 2222 username@otherjumphost /usr/bin/nc %h %p 2> /dev/null

Host something
    HostName 1.2.3.4

Host somethingelse
    HostName 2.3.4.5

Host otherthing
    HostName 3.4.5.6

решение2

Host remotehost
    ProxyCommand /usr/bin/ssh -p 2222 username@jumphost /usr/bin/nc %h %p 2> /dev/null

Поскольку jumphost доступен только через порт 2222, как вы описываете, вам необходимо сообщить об этом прокси-соединению SSH.

Поскольку дальнейшее редактирование вопроса прояснило, что на самом деле естьдвахосты, через которые вы будете проксировать, это становится немного сложнее, но не намного. Учитывая:

  • local.example.com- Хост, на котором вы работаете непосредственно
  • jump1.example.com- Хост, к которому вы напрямую подключаетесьlocal
  • jump2.example.com- Хост, к которому вы напрямую подключаетесьjump1
  • endpoint.example.com- Хост, к которому вы в конечном итоге подключаетесь

На local.example.com, добавьте следующее в конфигурацию SSH:

host endpoint.example.com
    ProxyCommand /usr/bin/ssh -p 2222 [email protected] /usr/bin/nc %h %p 2> /dev/null

На jump1.example.com, добавьте следующее в конфигурацию SSH:

host endpoint.example.com
    ProxyCommand /user/bin/ssh -p 2222 [email protected] /usr/bin/nc %h %p 2> /dev/null

Теперь вы сможете использовать оба прокси-сервера.ssh [email protected]local.example.com

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