Как мне выполнить SSH с машины A на машину B, используя промежуточный сервер?

Вопрос или проблема

У меня есть 3 машины (A, B и сервер). Сервер доступен везде, машина A доступна только в локальной сети моего университета, а машина B всегда со мной и используется для доступа к двум другим машинам. Как я могу получить доступ к машине A, используя сервер в качестве промежуточного звена, поскольку я не могу напрямую получить доступ с A на B. Но я могу получить доступ к серверу с B.

Ниже представлена грубая схема:

введите описание изображения здесь

Дело в том, что я не уверен в каком-либо способе, как подключиться по ssh к машине A с сервера, но обратное возможно (ssh с машины A на сервер), так что это не двунаправлено.

Если “Машина A” находится в той же подсети, что и “Сервер”, или ничего не блокирует трафик, вы можете использовать IPTables для переадресации трафика,

#Измените 5555 на любой желаемый свободный порт  
#Включите IP-адресацию:  
sudo sysctl -w net.ipv4.ip_forward=1

#Сделайте изменение постоянным:  
echo "net.ipv4.ip_forward=1" | sudo tee -a /etc/sysctl.conf  
sudo sysctl -p

#Создайте правило переадресации:  
sudo iptables -t nat -A PREROUTING -p tcp --dport 5555 -j DNAT --to-destination IP машины A:22

#Создайте правило MASQUERADE:
sudo iptables -t nat -A POSTROUTING -p tcp -d IP машины A --dport 22 -j MASQUERADE

#Сделайте правило постоянным при перезагрузках:  
sudo apt install iptables-persistent

Затем, чтобы получить доступ к “Машине A”, с “Машины B” подключитесь по ssh к порту 5555 на “Сервере”.

Если есть брандмауэр или другое устройство, блокирующее трафик от “Сервера” к “Машине A”

#Создайте обратный туннель с "Машины A" на "Сервер"  
#Замените user на ваше имя пользователя и Server на IP  
ssh -R 2222:localhost:22 user@Server

#Подключитесь к "Машине A" с "Машины B" через "Сервер"  
ssh -J user@Server -p 2222 user@localhost

Ответ или решение

Чтобы установить соединение SSH с машины A через сервер (что является промежуточным узлом) и получить доступ к машине A с машины B, вам необходимо использовать возможность обратного туннелирования SSH. Данная методика может быть особенно полезна в ситуациях, когда одна из машин (в данном случае машина A) недоступна напрямую из-за ограничений сети. В данной статье мы подробно рассмотрим, как выполнить данную задачу.

Шаг 1: Подготовка машины A

Сначала необходимо обеспечить возможность обратного туннелирования с машины A на сервер. Выполните следующие действия:

  1. Подключитесь к машине A:
    Используйте SSH-клиент для доступа к машине A из университетской сети. Например:

    ssh user@machineA
  2. Создайте обратный туннель на сервер:
    Находясь в машине A, выполните следующую команду, чтобы установить туннель к серверу:

    ssh -R 2222:localhost:22 user@server

    Здесь -R 2222:localhost:22 означает, что порт 2222 на сервере будет перенаправлен на порт 22 (SSH) машины A. Не забудьте заменить user на ваше имя пользователя на сервере.

Шаг 2: Доступ к машине A с машины B

Теперь, когда обратный туннель настроен, вы можете получить доступ к машине A с машины B через сервер:

  1. Подключитесь к серверу с машины B:
    Используйте вашу учетную запись на сервере для SSH-доступа:

    ssh user@server
  2. Соединение с машиной A через сервер:
    Находясь на сервере, выполните следующую команду для подключения к машине A:

    ssh -p 2222 user@localhost

    Здесь вы используете порт 2222, который настроен на сервере для перенаправления на машину A.

Варианты доступа

Если же вы не можете удерживать открытым соединение SSH с машины A на сервер (например, если соединение разрывается), вы можете использовать следующие подходы:

  • Автоматизация с помощью скриптов: Вы можете добавить команду SSH в cron на машине A, чтобы автоматически устанавливать соединение с сервером через заданные интервалы времени.
  • Использование autossh: Установите и используйте autossh для автоматического восстановления соединения SSH в случае его разрыва.

Заключение

Теперь вы знаете, как организовать доступ к машине A из машины B, используя промежуточный сервер. Этот метод может служить хорошим решением для работы в условиях ограниченного доступа, особенно в корпоративных и образовательных сетях. Правильная конфигурация туннелирования SSH не только упростит вашу работу, но и обеспечит безопасное подключение к необходимым ресурсам. Не забудьте учитывать политические и правовые аспекты, связанные с использованием SSH-туннелей в вашей сети.

Оцените материал
Добавить комментарий

Капча загружается...