как ssh два компьютера за NAT и Firewall, без третьего компьютера

9

Я пытаюсь ssh в мою коробку Linux дома. У меня дома общежитие в стиле общежития - NAT и Firewall с персональным ноутбуком под управлением Arch Linux. Моя работа в корпоративном стиле Windows 7 - NAT и прокси-сервер, без прав администратора.

Я могу подключить два работающих Team Viewer портативных. Однако это не устраивает то, что я действительно ищу. Я просто пытаюсь подключить SSH к своему Linux-компьютеру дома, оставив мой Linux-сервер полностью отключенным - в основном без головы, когда меня там нет.

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


Какое простое и безопасное решение SSH'ing на моем ноутбуке с работы? Существует ли бесплатный и безопасный «третий сервер»? Я был вверх и вниз Google, но, кажется, становится все более и более запутанным.

user1026169
источник
2
Есть ли у вас доступ к роутеру? Обычно вам нужно настроить параметры NAT, чтобы ваш публичный IP-адрес указывался на вашем внутреннем SSH-сервере, чтобы сделать что-то подобное.
jmreicha
Нет, у меня нет доступа к роутеру и я не могу настроить параметры NAT.
user1026169
Тогда в этом случае вам, вероятно, придется подключиться через третий сервер для прокси, если опция Team Viewer не будет работать.
jmreicha
кто предоставляет сервер, который я могу использовать только в качестве прокси для SSH?
user1026169
Могу поспорить, что облачный VPS поможет.
jmreicha

Ответы:

16

pwnat - это инструмент с открытым исходным кодом, который предположительно решает эту проблему. Это говорит:

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

Здесь нет посредников, нет прокси, нет сторонних разработчиков, не требуется UPnP / STUN / ICE, нет спуфинга и нет хитростей DNS.

Что еще более важно, клиент может затем подключиться к любому хосту или порту на любом удаленном хосте или к фиксированному хосту и порту, выбранным сервером.

Pwnat устанавливает этот вид связи:

Машина A (IP: 192.168.1.3) -> NAT A (IP: 122.xxx) -> Интернет -> NAT B (IP: 59.xxx) -> Машина B (192.168.2.10)

pwnat распространяется только для Linux, но статья PWNAT: Windows Complied Version содержит версию для Windows . См. Также того же автора. PWNAT: Пример .

Метод, используемый pwnat, невероятно умный, но нет никаких гарантий, что он будет работать в вашей среде.

harrymc
источник
1
Примечание: pwnat зависит от ICMP для работы. В частности, сообщения icmp echo и Time превышены. Это работает, потому что ICMP не имеет состояния.
shadowbq
Не работает для меня Маршрутизаторы NAT недостаточно умны для реализации стандартов и недостаточно умны, чтобы понять автора pwnat. +1 еще за ум.
квантовое
Я также пробовал pwnat безуспешно. Но возможно у меня что-то не так в моей конфигурации. Есть ли кто-нибудь, кто добился успеха, кто может оказать поддержку?
Робиннес
5

Лично я считаю, что туннелирование - ваш лучший вариант, даже если у вас еще нет третьего сервера.

Amazon EC2 предлагает опцию ценообразования Free Tier, позволяющую новым клиентам запускать микроэкземпляр Linux / Windows до 750 часов в месяц бесплатно в течение одного года. Я сам не пользовался этой службой, но предположил, что если вы запускаете виртуальный сервер только тогда, когда это необходимо, вы получаете бесплатный SSH-туннель. Вы могли бы даже найти услугу достаточно дешевой, чтобы гарантировать оплату?

Hak5 дал хорошее введение в туннелирование (с постоянством). Вы также можете настроить сценарий, запускаемый CRON, чтобы попытаться подключиться к виртуальному серверу, чтобы у вас был доступ к ноутбуку в течение нескольких минут после запуска экземпляра EC2 ...

danielcraigie
источник
Спасибо, я нашел бесплатный VPS с помощью нескольких форумов.
user1026169
1
Также обратите внимание, что 750 часов - это 31,25 дней ... Таким образом, вы получаете один t2.microэкземпляр бесплатно на год.
Attie
3

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

Да, есть бесплатный 3-й сервер, и вы уже используете его, TeamViewer. Убедитесь, что у вас установлен TeamViewer в качестве службы (или что-то подобное для Linux, я использую только версию для Windows). Затем установите драйвер VPN на работе и дома. После этого вы сможете подключиться с помощью VPN с работы, и ваш домашний компьютер будет иметь IP-адрес 7.xxx. Затем, если вы хотите войти в терминальную сессию, запустите SSH по каналу VPN.

Опция установки VPN находится в расширенных настройках. введите описание изображения здесь

Это добавит опцию «VPN» для типов соединений, которые вы можете сделать. введите описание изображения здесь

Скотт Чемберлен
источник
1
Большое спасибо за подробную помощь и скриншоты. Я использую TeamViewer, хотя и не имею прав администратора. Опция VPN неактивна, и я не могу ее использовать.
user1026169
1

Вы должны просто иметь возможность настроить переадресацию портов (порт 22) на домашнем маршрутизаторе / брандмауэре. А затем подключитесь к своему домашнему публичному IP-адресу, когда вы на работе. Вы можете использовать что-то вроде dyndns, если у вас дома нет статического публичного ip.

NetworkFish
источник
Переадресация портов невозможна ни на одной из моих машин из-за обслуживающей их сети. У меня нет настройки ip, однако нет портов, которые я мог бы использовать для подключения компьютеров.
user1026169
0

Вы можете использовать общедоступный сервер XMPP / Tox в качестве «третьего сервера». А именно, есть проекты, такие как Tuntox и PPPoAT (PPP поверх любого транспорта), которые используют эти протоколы обмена мгновенными сообщениями в качестве транспортных уровней.

Я пробовал PPPoAT, который поддерживает XMPP, и, в отличие от PWNAT, этот механизм действительно работает для меня.

Чтобы использовать его, вам понадобятся две учетные записи XMPP на любом общедоступном сервере - одна для сервера, на который вы хотите войти, другая для вашего клиента. После запуска pppoatна сервере, а затем на клиенте (оба с соответствующими параметрами конфигурации) вы можете немедленно начать соединение, например,

ssh username@10.0.0.2

Конечно, оно будет медленнее, чем прямое соединение, и скорость, скорее всего, будет зависеть от выбранного вами XMPP-сервера, но для нормальной работы консоли этого вполне достаточно.

Что касается безопасности, SSH может работать в совершенно небезопасной сети, поскольку он уже реализует свое собственное шифрование, поэтому при использовании SSH неважно, является ли безопасным соединение на основе XMPP.

Руслан
источник