SSH sebagai kaus kaki proxy melalui beberapa host

20

Apakah hal berikut dapat dicapai dengan SSH.

Ada tiga mesin yang terlibat:

A. My local machine at home
B. The SSH gateway server at school
C. A workstation in a lab, only reachable through B

Saya ingin mengatur proxy SOCKS. Saya ingin dapat berselancar di komputer lokal saya di rumah, seperti saya di lab. Ini disebabkan beberapa situs yang hanya dapat dijangkau dari IP publik sekolah.

Jadi saya ingin menjalankan proxy SOCKS pada host C. Tapi saya tidak berhasil membuatnya bekerja dari host A.

Saya terhubung ke gateway dan dari gateway saya terhubung ke workstation. Tapi saya tidak bisa membuat gateway mentransfer traffic dengan benar dari dan ke proxy.

Bagaimana saya bisa melakukan ini?

Sébastien
sumber

Jawaban:

28

Tiga metode yang sedikit berbeda. (Ganti $ PORTX dan $ PORTY dengan nomor port pilihan Anda.)

Metode pertama: ProxyCommand

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

Metode kedua:

  1. Terhubung dari A ke B, dengan "penerusan lokal" dari $ PORT untuk localhost: $ PORT .

    machine-a$ ssh -L $PORT:localhost:$PORT machine-b
    
  2. Terhubung dari B ke C, dengan "penerusan dinamis" diaktifkan.

    machine-b$ ssh -f -N -D $PORT machine-c
    
  3. Konfigurasikan browser Anda untuk menggunakan proxy di localhost: $ PORT .

Langkah # 1 dan # 2 dapat diringkas ke:

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

Metode ketiga:

  1. Terhubung dari A ke B, dengan "penerusan lokal" dari $PORTX untuk mesin-c : 22 .

    machine-a$ ssh -f -N -L $PORTX:machine-c:22 machine-b
    
  2. Hubungkan dari A ke C melalui terowongan, dengan "penerusan dinamis".

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

    (Anda bisa menghilangkan -f -N jika Anda ingin menggunakan terowongan yang sama untuk koneksi interaktif juga.)

  3. Konfigurasikan browser Anda untuk menggunakan proxy di localhost: $ PORTY .

grawity
sumber
1
Luar biasa, terima kasih! Saya berharap saya bisa memberi +1 ekstra untuk membuatnya satu liner!
jwbensley
1

Untuk AWS EMR Sock Proxy, di bawah ini adalah langkah-langkah yang diterapkan. Dengan asumsi kami memiliki dua skenario hop seperti di bawah ini

[your-laptop] --<ssh key1>--> [Jump-Box] --<ssh key2>--> [EMR-Master]

Dan Anda sudah menyiapkan FoxyProxy di browser Anda. Aktifkan sebelum memulai sebelum memulai langkah-langkah.

Langkah 1. Masuk ke Kotak Langsung

ssh -i ~ / .ssh / key1 ec2-user @

Langkah 2. Atur terowongan dinamis pada kotak Langsung, dengan asumsi Key2 ada di sana.

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

Langkah 3. Buka konsol baru pada klien ssh dan siapkan terowongan.

ssh -i ~ / .ssh / key1 -L 8157: localhost: 8157 ec2-user @ -N

kartik
sumber