Служить Интернет на удаленной машине через сессию SSH?

19

Машина, через которую я выполняю SSHing для удаленного / хост-компьютера (той же сети / локальной сети), имеет доступ к Интернету, а хост - нет.

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

Так что мне было интересно, есть ли более простой способ сделать это через, может быть, SSH или что-то еще?

У меня есть понимание сложностей, которые лежат внутри, но мне было любопытно узнать.

Использование plinkчерез Emacs (если это имеет значение).

Кровоточащие пальцы
источник

Ответы:

21

Давайте назовем машину, у которой есть доступ к интернету, hasinetи ту, у которой ее нет noinet.

Если вы можете сделать соединение SSH от noinet до hasinet

Вы можете сделать это легко с помощью встроенного в OpenSSH прокси-сервера SOCKS. Эта команда настроит прокси SOCKS при noinetпрослушивании через порт 1080:

noinet$ ssh -D 1080 hasinet

Если вы можете сделать только SSH соединения к noinet из hasinet

Вы можете запустить SOCKS-прокси OpenSSH hasinetи затем перенаправить порт из noinetв hasinet. Это можно сделать с помощью одной команды, например, так (спасибо @Patrick):

hasinet$ ssh -D 1080 localhost -t ssh -R 1080:localhost:1080 noinet

Как использовать SOCKS прокси

То, как вы используете этот прокси, будет зависеть от приложения. Некоторые приложения имеют встроенную поддержку прокси-серверов SOCKS. В этом случае вам необходимо настроить приложение на использование прокси-сервера localhost:1080. Если нет, вы можете использовать прокси-цепочки или redsocks, как подсказывает @sciurus. tsocks - это более легкое решение, если вам нужно предоставить доступ к сети только для некоторых команд.

smammy
источник
1
Вместо того, чтобы устанавливать прокси socks на hasinet, когда noinet нужно выйти, просто ssh -t -D 1080 localhost ssh -R 1080:localhost:1080 noinet(да, одна команда).
Патрик
2

Вот способ сделать это через SSH:

На машине без доступа к интернету беги

ssh -D 8080 machine_with_internet_access

Вы можете заменить 8080 любым неиспользуемым номером порта,

Затем установите программное обеспечение, такое как proxychains или redsocks , настройте их для подключения к localhost: 8080 и запустите программное обеспечение, которому через них требуется доступ в Интернет.

Sciurus
источник