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

Второй метод:

  1. Соединитесь с A до B, с "локальной пересылкой" $PORT в localhost:$PORT,

    machine-a$ ssh -L $PORT:localhost:$PORT machine-b
    
  2. Подключение от B к C, с включенной "динамической пересылкой".

    machine-b$ ssh -f -N -D $PORT machine-c
    
  3. Настройте браузер на использование прокси на localhost:$PORT,

Шаги № 1 и № 2 можно суммировать следующим образом:

ssh -f -L $PORT:localhost:$PORT machine-b "ssh -f -N -D $PORT machine-c"

Третий метод:

  1. Соединитесь с A до B, с "локальной пересылкой" $PORTX в machine-c:22,

    machine-a$ ssh -f -N -L $PORTX:machine-c:22 machine-b
    
  2. Соединитесь от A до C по туннелю с "динамической пересылкой".

    machine-a$ ssh -f -N -D $PORTY localhost -p $PORTX
    

    (Вы можете опустить -f -N если вы хотите использовать тот же туннель для интерактивных соединений.)

  3. Настройте браузер на использование прокси на 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

Другие вопросы по тегам