Рейтинг:0

ssh на сервер без общедоступного IP-адреса с сервера без общедоступного IP-адреса, который скрыт за сервером с общедоступным IP-адресом

флаг sk

У меня есть следующая настройка: я хотел бы получить доступ к машине A с машины C, но ни у одной из них нет общедоступного IP-адреса. Однако машина C находится в той же сети, что и машина B, которая имеет общедоступный IP-доступ, поэтому я могу получить доступ к машине C из любого места, сначала подключившись к машине B по ssh, а оттуда — к машине C. У меня нет root-доступ на машине B, в то время как на A и C у меня есть. См. следующую диаграмму для пояснения:

машина А машина Б машина С
без общедоступного IP-адреса без публичного IP-адреса без публичного IP-адреса
root-доступ нет root-доступа root-доступ     
как получить доступ? '-------------'
                           та же сеть
                       следовательно, оба доступны

Глупым решением было бы заставить машину A регулярно прослушивать файл на машине C (с помощью описанного выше двухэтапного доступа по ssh) и всякий раз, когда в этом файле появляется команда, выполнять ее и записывать выходные данные по ssh где-нибудь на машине C. I , однако интересно, может ли ssh каким-то образом «обратить» соединение, чтобы машина A подключалась за 2 шага к машине C, а затем соединение «реверсировалось», так что машина C фактически имела удаленную оболочку машины A? И если да, то как мне это сделать?

Рейтинг:1
флаг in

Вы можете иметь машинаА чтобы открыть SSH-туннель для машинаБ, с опцией удаленной переадресации, которая позволит вам подключиться по SSH к машинаА от машинаБ.

Если у вас есть root-доступ на машинаБ, затем установите Порты шлюза вариант конфигурации для да в /etc/ssh/sshd_config, затем введите эту команду на машинаА:

ssh -N -R 0.0.0.0:2222:127.0.0.1:22 the_public_ip_of_machine_B

Это откроет порт 2222 на машинаБ, и перенаправить любой трафик на этот порт на себя, на порт 22. Обратите внимание, что это будет прослушивать все интерфейсы, включая общедоступный, поэтому вы можете захотеть установить брандмауэр с номером порта 2222 (но, вероятно, у вас есть брандмауэр на машинаБ тем не мение). Пока этот туннель активен, вы можете использовать SSH для машинаБ на порт 2222, и это приведет вас к машинаА. С машинаБ и машинаC находятся в одной подсети, вы можете войти машинаА от машинаC в один шаг.

Если у вас нет root-доступа на машинаБ, то процесс такой же, за исключением адреса прослушивания. Если Порты шлюза установлен на нет (по умолчанию), то первый аргумент (0.0.0.0) будет просто проигнорирован, а адрес прослушивания будет привязан к 127.0.0.1. В этом случае вы все равно можете использовать команду сверху, и форвардинг будет работать так же, но открытый порт будет доступен не откуда-либо, а из машинаБ. Таким образом, вы должны SSH в машинаБ, затем SSH к локальный хост, порт 2222, который приведет вас к машинаА.

Однако вы можете рассмотреть возможность использования чего-то более надежного, например VPN.

флаг sk
Спасибо, завтра попробую, в моем городе уже довольно поздно. Я отредактирую свой вопрос, у меня нет root-доступа на B, и я бы предпочел сделать как можно больше на C - машина B - это просто внешний интерфейс для подключения, и администратор был бы не очень доволен, если бы я там напортачил. .

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.