7

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

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

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

Вот диаграмма, описывающая ситуацию:

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

3 ответа3

14

на домашнем сервере (туннель от стороннего к домашнему):
ssh -R 20000:127.0.0.1:22 thirdparty.org

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

На удаленном компьютере (туннель от удаленного к стороннему):
ssh -L 20000:127.0.0.1:20000 thirdparty.org

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

а затем на удаленном компьютере (подключиться через туннели):
ssh 127.0.0.1:20000 и введите учетные данные для вашего домашнего сервера

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

6

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

R -> A

ssh -R 20000:127.0.0.1:22 user@RemoteHost
  1. Вышеуказанная команда выполняется на машине А.

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

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) -> A (порт 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
1

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

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