SSH-соединение между двумя компьютерами за nat через третий общедоступный ip-компьютер

У меня дома есть компьютер (home-server), которое работает irssi, закачками и т. д. Мой провайдер блокирует каждый трафик извне (тупой, я знаю, но это единственный провайдер, который у меня может быть).

Я хочу иметь возможность войти в home-serverоболочка из любого удаленный-компьютер (за NAT).

У меня где-то есть учетная запись shell (без доступа root), это может быть полезно.

здесь диаграмма описывая положение:
enter image description here

это возможно, чтобы получить доступ к оболочке на моем home-server?
Я слышал что-то о туннелировании ssh, но не смог найти учебник, соответствующий этому случаю.

18
задан seler
12.05.2023 17:16 Количество просмотров материала 2600
Распечатать страницу

3 ответа

на домашнем сервере (туннель от третьей стороны до дома):

ssh -R 20000:127.0.0.1:22 thirdparty.org

это подключает ваш домашний ящик к сторонней оболочке, а затем начинает пересылать любые подключения к порту 20000 на сторонней оболочке к порту 22 на вашем домашнем ящике (порт SSH).

на удаленном компьютере (туннель от удаленного к третьему лицу):

ssh -L 20000:127.0.0.1:20000 thirdparty.org

это подключает ваш удаленный ящик к сторонней оболочке, а затем начинает foward порт 20000 на удаленная коробка к порту 20000 на сторонней оболочке.

и после этого на удаленном компьютере (соединитесь над тоннелями):

ssh 127.0.0.1:20000 и введите учетные данные для вашего домашнего сервера

это будет пытаться ssh к порту 20000 на удаленном поле. Так как мы настроили туннель к третьей стороне, команда #2 эффективно передает эту попытку подключения к 127.0.0.1:20000 на сторонней оболочке. Затем первая команда снова устанавливает соединение с портом 22 на домашнем компьютере, в этот момент сервер ssh поднимает соединение.

14
отвечен Darth Android 2023-05-14 01:04

Я попытался лучше объяснить принятое решение ниже. Допустим, "машина" и "Б" оба за NAT брандмауэром. В то время как оба имеют доступ ssh к удаленной "машине R" (скажем, VPS).

R - > A

ssh -R 20000:127.0.0.1:22 user@RemoteHost
  1. команда выполняется на компьютере на.

  2. создать туннель из R (порт 20000 R) для на (порт 22 из) (обратное туннелирование)

B - > R

ssh -L 8000:127.0.0.1:20000 user@RemoteHost
  1. выше команда выполняется на B.

  2. создает туннель от B (порт 8000 из B) для R (порт 20000 R)

B - > A

ssh 127.0.0.1 -p 8000

подключение если идет R , что это B (порт 8000) -> R (порт 20000) -> и(порт 22)


то же самое с помощью PuTTY и windows:

R - > A

putty.exe -R 20000:127.0.0.1:22 -ssh RemoteHost -P port -l user -pw password

B - > R

putty.exe -L 8000:127.0.0.1:20000  -ssh RemoteHost -P port -l user -pw password

B - > A

putty.exe -ssh 127.0.0.1 -P 8000 -l user -pw password
6
отвечен Ryu_hayabusa 2023-05-14 03:21

или вы могли бы также настроить некоторые туннели IPv6 с HE.net и как раз соединитесь сразу... (Многие VPN-решения также будут работать.)

1
отвечен billc.cn 2023-05-14 05:38

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх