
В нашей среде у нас есть 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