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


20

Чи можна досягти наступного за допомогою 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. Але мені не вдається змусити його працювати від хоста А.

Я підключаюсь до шлюзу, а з шлюзу підключаюсь до робочої станції. Але я не можу змусити шлюз перенести трафік належним чином із проксі та на проксі.

Як я можу це зробити?

Відповіді:


28

Три трохи різні методи. (Замініть $ 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. Підключіть від А до С через тунель, з "динамічним переадресацією".

    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-користувач @

Крок 2. Налаштуйте динамічний тунель на поле Стрибок, якщо припустити, що там присутній Key2.

ssh -i ~ / key2 -N -D 8157 hadoop @

Крок 3. Відкрийте свіжу консоль клієнта ssh та налаштуйте тунель.

ssh -i ~ / .ssh / key1 -L 8157: localhost: 8157 ec2-користувач @ -N

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.