SSH เป็นถุงเท้าพร็อกซีผ่านหลายโฮสต์


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 กับ "การส่งต่อท้องถิ่น" ของการ$PORTlocalhost:$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 กับ "การส่งต่อท้องถิ่น" ของการ$PORTXmachine-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 เข้าสู่ระบบไปที่กล่องกระโดด

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

ขั้นตอนที่ 2 ตั้งค่าอุโมงค์แบบไดนามิกในกล่องกระโดดสมมติว่ามี Key2 อยู่ที่นั่น

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

ขั้นตอน 3. เปิดคอนโซลสดบนไคลเอนต์ ssh และตั้งค่าอุโมงค์

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

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.