Как мне подключиться к домашнему компьютеру по SSH из Интернета?

Как мне подключиться к домашнему компьютеру по SSH из Интернета?

Существует ли программное обеспечение, которое поможет мне подключиться по SSH к моему домашнему компьютеру из публичного интернета? (Скажем, из кофейни).

Я понимаю, что подобные вопросы задавались, но ни один из них не отвечает на вопрос. Позвольте мне добавить некоторые подробности, чтобы избежать обычного потока ответов о DynDns и переадресации портов.

  • У меня есть доступ к общедоступному SSH-серверу. Простое перенаправление портов оттуда не является стабильным решением, которое работает несколько дней. Перенаправление портов имеет тенденцию обрывать соединения, быть медленным и т. д.

  • Я не хочу настраивать/платить за DynDns и настраивать обход NAT на своем маршрутизаторе.

Я считаю, что следующее возможно, но не знаю, существует ли программное обеспечение, которое уже это делает:

Точно так же, как пиринговые программы прокалывают NAT-траверсию, должно быть возможно запустить программу на моей домашней машине, которая открывает внешний доступ к соответствующим портам путем прокалывания. Кроме того, программа может транслировать публичный IP домашнего компьютера и прокалывать видимый снаружи порт где-то (например, на публичном сервере или по электронной почте) и периодически обновлять эту информацию.

Существует ли такое ПО? Часть этой функциональности уже реализована в различных торрент-софтах.

решение1

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

Существует программное обеспечение, которое может эмулировать локальную сеть через Интернет, называемоеLogMeIn ХамачиУстановив и включив его на хосте, вы сможете получить к нему доступ, войдя в VLAN из любой точки Интернета.

Хотя я не вижу особой проблемы с переадресацией портов.

Другой вариант — использовать встроенную функцию SSH Port Forwarding. Если в той же локальной сети, что и хост, к которому вы пытаетесь подключиться (Host 2), есть другой хост SSH, доступный из Интернета (назовем его Host 1), вы можете выполнить команду, которая перенаправит соединение с вашего компьютера (на определенном локальном порту) через Host 1, а Host 1 направит ваш трафик на Host 2 без переадресации портов в своей локальной сети.

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

ssh -L [local-port-to-open]:[local-IP-of-Host-2-according-to-Host-1]:[port-to-connect-to-on-Host-2-from-Host-1] [user-of-Host-1]@[Host-1-address]

Это откроет порт на вашей машине (ваш [local-port-to-open]аргумент), которым управляет SSH, отправляя любой трафик с этого порта через зашифрованный туннель, созданный моими аргументами, [user-of-Host-1]@[Host-1-address]на Host-2, как указано в [local-IP-of-Host-2-according-to-Host-1]:[port-to-connect-to-on-Host-2-from-Host-1]. Этот метод называется Local Port Forwarding (я не очень понимаю удаленную переадресацию портов).

Например, скажем, я хочу подключиться к хосту 2, который не переадресован портами, из моей местной кофейни, используя хост 1, который переадресован портами, чтобы перенаправить соединение в его локальную сеть. Обратите внимание, что это откроет PTS на удаленной машине, но его можно игнорировать, пока вы не захотите закрыть этот туннель. Затем вы можете просто закрыть этот терминальный сеанс, как обычно.

Публичный IP-адрес хоста 1 201.31.103.212(NAT, который инкапсулирует как хост 1, так и хост 2) на порту 1337для SSH. Хост 2 в локальной сети имеет локальный IP-адрес 192.168.254.40и использует порт 22для SSH. Имя пользователя для входа на хост 1 — fish.

Хорошо, я просто скажу, что у меня есть локальный порт, 8080который временно не используется, и я могу использовать его для этой демонстрации.

Команда, которую я бы сформировал, выглядит следующим образом:

ssh -L 8080:192.168.254.40:22 [email protected]

Теперь это открывает порт 8080на вашем локальном компьютере и отправляет на 192.168.254.40порт 22(хост 2) в соответствии с хостом 1 (который является [email protected])

Теперь, если вы хотите подключиться по SSH к хосту 2, все, что вам нужно сделать, это указать свой компьютер на порту 8080. Допустим, имя пользователя для входа на хост 2 —turtle

ssh [email protected] -p 8080

SSH управляет вашим портом 8080и отправляет ваш SSH-запрос на хост 1, который отправляет его на хост 2. Обратите внимание, что вместо использования 127.0.0.1вы также можете просто использовать localhost. Это просто предпочтение.

Еще одно применение переадресации портов SSH — прокси-серверы.

Сценарий: Я в школе со своим личным ноутбуком и хочу получить доступ к Twitter, который заблокирован (на самом деле он заблокирован в моей старшей школе, поэтому я сделал именно это). У меня дома есть перенаправленный порт SSH-хост с IP 39.34.81.56на порту 1337. Я хочу перенаправить соединение с Twitter (веб-серверы чаще всего размещаются на порту 80) с моего порта 8080на моем ноутбуке через мой домашний хост. Я бы выполнил команду на своем ноутбуке:

ssh -L 8080:twitter.com:80 [email protected] -p 1337

Теперь я могу зайти localhost:8080в свой веб-браузер, и он будет направлять Twitter через мой зашифрованный туннель с их серверов ко мне домой, а затем на мой ноутбук в школе.

Я могу использовать этот же метод для входа на сайт, который не использует SSL (например, Pastebin), в открытом доступе и быть уверенным, что мои учетные данные в безопасности, поскольку они зашифрованы с помощью SSH и отправляются без SSH только из моего дома, в безопасности которого я убедился.

Удачи!

EDIT: Простое замечание: показанные здесь IP-адреса не должны быть действительными, но если это так, пожалуйста, не преследуйте пользователей этих IP-адресов.

решение2

Да, так что я думаю, что переадресация портов - это метод пробивания дыр. Если бы вы хотели, вы могли бы поместить свой компьютер в DMZ и избежать всего этого беспорядка.

Связанный контент