SSH как socks прокси через несколько хостов


21

Может ли быть достигнуто следующее с помощью 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.

Я подключаюсь к шлюзу, а со шлюза подключаюсь к рабочей станции. Но я не могу заставить шлюз правильно передавать трафик с и на прокси.

Как я могу это сделать?

Ответы:


28

Три слегка разных метода. (Замените $ PORTX и $ PORTY на номера портов по вашему выбору.)

Первый метод: ProxyCommand

machine-a$ ssh -f -N -D $PORT -oProxyCommand="ssh -W %h:%p machine-b" machine-c

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

  1. Соединитесь от A до B, с "локальной переадресацией" of $PORTto .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, с "локальной переадресацией" of $PORTXto 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


1
Удивительно, спасибо! Я хотел бы дать дополнительный +1 для того, чтобы сделать его одним вкладышем!
Jwbensley

2

Для 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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.