SSH как socks прокси через несколько хостов
Может ли быть достигнуто следующее с помощью SSH.
Здесь задействованы три машины:
A. My local machine at home
B. The SSH gateway server at school
C. A workstation in a lab, only reachable through B
Я хочу настроить SOCKS прокси. Я хочу, чтобы у меня была возможность заниматься серфингом на своем локальном компьютере дома, как в лаборатории. Это связано с тем, что некоторые сайты доступны только с общедоступного IP-адреса школы.
Поэтому я хочу запустить SOCKS прокси на хосте C. Но мне не удается заставить его работать с хоста A.
Я подключаюсь к шлюзу, а со шлюза подключаюсь к рабочей станции. Но я не могу заставить шлюз правильно передавать трафик с и на прокси.
Как я могу это сделать?
2 ответа
Три немного разных метода. (Замените $PORTX и $PORTY на номера портов по вашему выбору.)
Первый метод: ProxyCommand
machine-a$ ssh -f -N -D $PORT -oProxyCommand="ssh -W %h:%p machine-b" machine-c
Второй метод:
Соединитесь с A до B, с "локальной пересылкой"
$PORT
вlocalhost:$PORT
,machine-a$ ssh -L $PORT:localhost:$PORT machine-b
Подключение от B к C, с включенной "динамической пересылкой".
machine-b$ ssh -f -N -D $PORT machine-c
Настройте браузер на использование прокси на
localhost:$PORT
,
Шаги № 1 и № 2 можно суммировать следующим образом:
ssh -f -L $PORT:localhost:$PORT machine-b "ssh -f -N -D $PORT machine-c"
Третий метод:
Соединитесь с A до B, с "локальной пересылкой"
$PORTX
вmachine-c:22
,machine-a$ ssh -f -N -L $PORTX:machine-c:22 machine-b
Соединитесь от A до C по туннелю с "динамической пересылкой".
machine-a$ ssh -f -N -D $PORTY localhost -p $PORTX
(Вы можете опустить
-f -N
если вы хотите использовать тот же туннель для интерактивных соединений.)Настройте браузер на использование прокси на
localhost:$PORTY
,
Для AWS EMR Sock Proxy ниже приведены применяемые шаги. Предполагая, что у нас есть два сценария прыжков, как показано ниже
[your-laptop] --<ssh key1>--> [Jump-Box] --<ssh key2>--> [EMR-Master]
И вы уже настроили FoxyProxy в своем браузере. Активируйте его перед запуском перед началом шагов.
Шаг 1. Войдите в Jump Box
ssh -i ~ /.ssh / key1 ec2-user @
Шаг 2. Настройте динамический туннель на поле Jump, предполагая, что там присутствует Key2.
ssh -i ~ / key2 -N -D 8157 hadoop @
Шаг 3. Откройте новую консоль на клиенте ssh и настройте туннель.
ssh -i ~ /.ssh / key1 -L 8157: локальный хост:8157 ec2-user@ -N