Конкретная проблема: Учитывая, что у меня есть одна машина с реальным IP-адресом (экземпляр Amazon Linux) A1, и я нахожусь на моей локальной локальной машине L1, и у меня есть небольшой сервер, работающий дома L2

Как я могу SSH в L2 из L1, как я делаю в A1? если у L2 нет реального IP ...

Я использую множество java-микросервисов на машинах aws, все эти сервисы не нуждаются в расширении, мне не нужны какие-либо необычные функции, которые предлагают облачные провайдеры, но чем больше услуг я использую, тем больше мой счет и чем сложнее общение между ними ...

Итак, я хочу сейчас купить серверный компьютер с большим количеством оперативной памяти и процессора, запустить все эти сервисы на нем и избегать использования AWS или какого-либо поставщика вообще ... У меня есть разные сценарии, которые будут SSH на удаленном хосте и выполнять некоторые работы, связанные с развертыванием ... Я хочу, чтобы они все еще работали с L2, когда я запускаю их с персонального компьютера ...

Если есть более простые способы сделать это, пожалуйста, предложите. Но сейчас я вижу два решения: либо я получаю реальный IP-адрес от оператора, либо я использую aws или какую-то фиктивную машину с реальным IP для соединения двух машин L1 и L2 ...

Я почти не управлял какой-либо инфраструктурой, так что извините, если это вопрос нуба ...

3 ответа3

4

Именно такую проблему решает удаленная пересылка по SSH.
Это требует, чтобы у вас был A1, машина с реальным IP. Машина с очень ограниченными ресурсами в порядке, так как она действует только как трамплин.
Поскольку L2 не имеет реального IP-адреса, вам нужно установить ssh-соединение от L2 к A1 и создать туннель:

root@L2# ssh user@A1 -R 9022:localhost:22   

Поэтому теперь, когда соединение достигает порта 9022 на А1, оно перенаправляется на порт 22 на L2.
Теперь вы можете 1) SSH на A1 2) оттуда SSH на localhost 9022

Конечно, вы можете выполнить тонкую настройку этого решения, например, автоматически повторно инициировать соединение от L2 до A1 при отключении. например, пусть SSH прослушивает порт 9022 на реальном IP-адресе, а не на кольцевом адресе (требуется редактирование конфигурации SSHD).

1

Если ваш сервер L2 находится в вашей домашней сети, то он находится позади вашего маршрутизатора и по умолчанию не виден из Интернета (что означает, что ни один компьютер в Интернете не может открыть подключение к нему). Как сказано выше, он находится в вашей локальной домашней сети с адресом 10 ... * или 192.168. ,

С точки зрения Интернета (включая вашу систему L1, когда вас нет дома), единственным устройством с истинным интернет-адресом является ваш маршрутизатор, и все ваши домашние машины, подключающиеся к Интернету, имеют такой адрес (поэтому Вы можете получить интернет-адрес своего роутера, зайдя на какой-либо сайт, например, showmyip.net, в своем интернет-браузере). Преимущество установки заключается в том, что случайный хакер не может открыть соединение с вашими компьютерами.

Обычно вы можете попросить маршрутизатор переадресовывать запросы на подключение к какому-либо порту (например, SSH) на один конкретный компьютер (IP-адрес) в вашей локальной сети, поэтому SSH-доступ к вашему интернет-адресу из любой точки Интернета фактически соединит вас с вашим Сервер L2. Смотрите пример инструкции здесь.

Обратите внимание, что это может быть не очень хорошей идеей (потому что, если вы допустили ошибку, вы можете открыть свою домашнюю сеть для хакеров, а в случае чего-то плохого ваш интернет-адрес может быть помещен в черный список). Это также требует, чтобы у вас был фиксированный сетевой адрес (или чтобы вы могли легко найти новый адрес при его изменении). Размещенный сервер все еще обычно является лучшим решением, но AWS - не единственный поставщик, вы можете получить базовые VPS-серверы Linux за 5 долларов в месяц.

0

Руководство по подключению к домашнему компьютеру по ssh из интернета:

  1. Если у вас есть статический IP-адрес позади маршрутизатора, вы можете подключиться к домашнему компьютеру из Интернета.
  2. Форвард 22 порт на вашем роутере, вот несколько примеров, как это сделать
  3. Установите openssh-сервер на свой локальный компьютер:

    sudo apt установить openssh-сервер

  4. Разрешить подключение к 22 порту для локальной машины:

    iptables -A INPUT -p tcp --dport 22 -j ПРИНЯТЬ

  5. Проверьте ваше соединение с удаленного компьютера, используя telnet:

    телнет you_external_ip 22

  6. Подключитесь к локальной машине, используя ssh:

    ssh your_external_ip

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .