Как настроить сервер перехода SSH в Linux
хост перехода (также известный как сервер перехода) – это промежуточный хост или SSH-шлюз к удаленной сети, через который можно установить соединение с другим хостом в другая зона безопасности, например, демилитаризованная зона (DMZ). Он соединяет две разные зоны безопасности и обеспечивает контролируемый доступ между ними.
Переходный хост должен быть надежно защищен и контролироваться, особенно если он охватывает частную сеть и демилитаризованную зону с серверами, предоставляющими услуги пользователям в Интернете.
Классический сценарий — подключение вашего настольного компьютера или ноутбука из внутренней сети вашей компании, которая надежно защищена межсетевыми экранами, к DMZ. Чтобы легко управлять сервером в демилитаризованной зоне, вы можете получить к нему доступ через хост перехода.
В двух словах, сервер SSH Jump — это сервер Linux, который используется в качестве шлюза к другим серверам Linux в частной сети по протоколу SSH.
В этой статье мы покажем, как получить доступ к удаленному серверу Linux через хост перехода, а также настроим необходимые параметры в конфигурациях SSH-клиента для каждого пользователя.
Настройка сервера перехода SSH
Рассмотрим следующий сценарий.
Для большей ясности ниже приведена простая настройка, демонстрирующая роль сервера SSH Jump.
Причины настройки сервера перехода SSH
Сервер Jump обеспечивает шлюз к вашей инфраструктуре и уменьшает потенциальную поверхность атаки на ваши ресурсы. Он также обеспечивает прозрачное управление устройствами, а также единую точку доступа к вашим ресурсам.
Имейте в виду, что при включении сервера перехода в свою инфраструктуру убедитесь, что сервер защищен, иначе было бы все равно, что не использовать его. Мы вернемся к этому позже в этом уроке.
Как создать простой сервер перехода SSH
Давайте теперь сосредоточимся на том, как создать простой сервер SSH Jump. Вот наша простая установка.
- Исходный IP: 105.68.76.85.
- IP-адрес сервера перехода (назовем его хост-переходом): 173.82.232.55.
- IP-адрес назначения (назовем его host_destination): 173.82.227.89.
В приведенном выше сценарии вы хотите подключиться к HOST 2 (173.82.227.89), но вам нужно пройти через HOST 1 (173.82.232.55) из-за брандмауэра. маршрутизация и права доступа. Существует ряд веских причин, по которым необходимы переходные хосты.
Динамический список Jumphost
Самый простой способ подключиться к целевому серверу через хост перехода — использовать флаги -A
и -J
в командной строке. Это указывает ssh установить соединение с хостом перехода, а затем установить пересылку TCP на целевой сервер оттуда (убедитесь, что у вас есть вход по SSH без пароля между компьютерами).
ssh -A -J user@jump-server user@destination server
Например, в нашей настройке у нас есть пользователь по имени james, настроенный на сервере перехода, и tecmint, настроенный на целевой или целевой системе.
Команда будет выглядеть следующим образом с исходного IP-адреса.
ssh -A -J [email [email
Команда запросит у вас пароль пользователя сервера перехода, а затем пароль целевой системы, по которому вам будет предоставлен доступ к целевой системе.
Если имена пользователей или порты на компьютерах различаются, укажите их на терминале, как показано.
ssh -J username@host1:port username@host2:port
Список нескольких Jumphosts
Тот же синтаксис можно использовать для перехода через несколько серверов.
ssh -J username@host1:port,username@host2:port username@host3:port
Статический список Jumphost
Статический список Jumphost означает, что вы знаете Jumphost или Jumphosts, необходимые для подключения машины. Поэтому вам необходимо добавить следующую статическую маршрутизацию jumphost в файл ~/.ssh/config
и указать псевдонимы хостов, как показано.
### First jumphost. Directly reachable
Host vps1
HostName vps1.example.org
### Host to jump to via jumphost1.example.org
Host contabo
HostName contabo.example.org
ProxyJump vps1
Теперь попробуйте подключиться к целевому серверу через хост перехода, как показано.
ssh -J vps1 contabo
Второй метод — использовать параметр ProxyCommand для добавления конфигурации jumphost в ваш ~.ssh/config
или $HOME/. ssh/config
, как показано.
В этом примере целевой хост — contabo, а jumphost — vps1.
Host vps1
HostName vps1.example.org
IdentityFile ~/.ssh/vps1.pem
User ec2-user
Host contabo
HostName contabo.example.org
IdentityFile ~/.ssh/contabovps
Port 22
User admin
Proxy Command ssh -q -W %h:%p vps1
Сохраните изменения и выйдите из файла. Чтобы применить изменения, перезапустите демон SSH.
sudo systemctl restart ssh
Давайте рассмотрим параметры, используемые в файле конфигурации:
-q
– означает тихий режим. Он подавляет предупреждения и диагностические сообщения.-W
— запрашивает пересылку стандартного ввода и вывода клиента на HOST на PORT по защищенному каналу.%h
— указывает хост, к которому необходимо подключиться.%p
— указан порт для подключения на удаленном хосте.
Чтобы «перейти» к системе назначения с исходного IP-адреса через сервер перехода, просто выполните следующую команду:
ssh contabo
Приведенная выше команда сначала откроет ssh-соединение с vps1 в фоновом режиме, на которое влияет ProxyCommand, а затем запустит ssh-сеанс с целевым сервером contabo . .
Повышение безопасности сервера перехода SSH
Один из способов сделать эту настройку более безопасной — скопировать общедоступный ключ SSH из исходной системы на сервер перехода, а затем, наконец, в целевую систему, а затем отключить аутентификацию по паролю. Ознакомьтесь с нашим руководством о том, как включить аутентификацию без пароля SSH.
Кроме того, ознакомьтесь с советами по усилению защиты сервера SSH.
Кроме того, убедитесь, что на сервере Jump не хранятся конфиденциальные данные, поскольку это может привести к утечке учетных данных доступа, таких как имена пользователей и пароли, что приведет к нарушению целостности системы.
Для получения дополнительной информации посетите справочную страницу ssh или обратитесь к: OpenSSH/Cookbxook/Proxies and Jump Hosts.
На данный момент это все! В этой статье мы продемонстрировали, как получить доступ к удаленному серверу через переходный хост. Используйте форму обратной связи ниже, чтобы задать нам любые вопросы или поделиться своими мыслями.