SSH tunnel ผ่านสองเซิร์ฟเวอร์เพื่อเข้าถึงเว็บเซอร์วิสบนพอร์ต 9091


2

สิ่งที่ฉันมีคือบริการ "โทรศัพท์บ้าน" remote1 ที่เชื่อมต่อกับ LAN1 ผ่าน:

ssh -N -R 16864:localhost:22 <myuser.on.lan1>@<lan1.ip>

ดังนั้นจากเทอร์มินัล SSH LAN1 ฉันสามารถโหลดเทอร์มินัลได้อย่างง่ายดาย remote1 ทำ:

ssh -l <myuser.on.remote1> -p 16864 localhost

remote1 กำลังเรียกใช้บริการ daemon ด้วยเว็บพาเนลที่พอร์ต 9091 (เกียร์)

ดังนั้นสิ่งที่ฉันต้องการคือการเชื่อมต่อกับเว็บอินเตอร์เฟสนี้บนพอร์ต 9091 บน remote1ผ่าน LAN1 (นั่นมีอุโมงค์เปิดอยู่บนพอร์ตแล้ว 16864 ) จากเครื่องท้องถิ่นของฉัน

ดังนั้นนี่อาจเป็น:

Local machine browser -> LAN1:16864 -> 22:REMOTE1:9091

ฉันลองใช้คำสั่ง SSL ที่แตกต่างกันเล็กน้อยตามสิ่งที่ฉันอ่าน ที่นี่ , ที่นี่ , ที่นี่ และการตั้งค่าดั้งเดิมจะขึ้นอยู่กับ นี้

ฉันได้ลองทำสิ่งนี้ แต่ฉันแน่ใจว่าฉันสนิท แต่ก็แพ้ในสิ่งที่ต้องทำ:

ssh -t -L8080:localhost:5590 user@192.168.2.42 ssh -l user -p 16864 localhost -N

แต่แน่นอนถ้าฉันถามที่นี่ก็เพราะฉันล้มเหลวอย่างน่าสังเวช มีผู้เชี่ยวชาญคนใดบ้างที่จะช่วยฉันในเรื่องนี้?

แก้ไข:

ฉันไม่มีไดอะแกรม แต่ฉันจะอธิบายในวิธีอื่น:

ฉันมีคอมพิวเตอร์ Linux 3 เครื่อง:

  • REMOTE1 raspPi ตลอดเวลาบนตำแหน่งระยะไกลซึ่งฉันไม่สามารถเข้าถึงการกำหนดค่าเครือข่ายได้มากนัก
  • LAN1 raspPi บน LAN ในพื้นที่ของฉันเสมอซึ่งฉันสามารถตั้งค่าการส่งต่อพอร์ต, IP คงที่และ DNS แบบไดนามิกโดยไม่มีปัญหา
  • พีซีของฉันซึ่งฉันต้องการเข้าถึงบริการบนเว็บของฉัน REMOTE1

REMOTE1 กำลังทำการ "โทรกลับบ้าน" เพื่อรักษาการเชื่อมต่อ SSH ด้วย LAN1 ผ่าน:

ssh -N -R 16864:localhost:22 <myuser.on.lan1>@<lan1.ip>

และส่วนนั้นก็ทำงานได้ดี ฉันใช้เทอร์มินัลเครื่องท้องถิ่นของฉันเพื่อ SSH ไป LAN1จากนั้นภายใน LAN1 เครื่องฉันพิมพ์:

ssh -l <myuser.on.remote1> -p 16864 localhost

และฉันสามารถทำสิ่งที่เทอร์มินัล REMOTE1.

ขณะนี้ฉันเพิ่งได้รับบริการบน 9091 (transmission-daemon) แต่ฉันจะติดตั้งสิ่งอื่น ๆ ในภายหลัง

ดังนั้นคำถามฉันจะอุโมงค์จากเครื่องท้องถิ่นของฉันในการเข้าถึงบริการเว็บบนพอร์ต 9091 บน REMOTE1 จะผ่านการเชื่อมต่อที่อุโมงค์ LAN1?

ในวิธีที่ง่าย:

  • เครื่องท้องถิ่น: ssh 8888 <magic> 1684 <magic> 9091 <magic> -N
  • เปิดเบราว์เซอร์ตามประเภท localhost:8888/transmission/web/ และเข้าถึงมันส่ง -demon บน REMOTE1

ฉันต้องการรูปภาพหรืออะไรซักอย่าง ฉันไม่ได้ติดตามสิ่งที่ต้องไปที่ไหน ไม่ว่าในกรณีใดคุณควรใช้ ProxyCommand ssh -W intermediate จากเครื่องโลคัลเพื่อให้คุณสามารถสร้างช่องสัญญาณเดียวระหว่างโฮสต์ที่ไกลและโฮสต์ในพื้นที่
Zoredache

ขอบคุณสำหรับคำตอบ. ฉันแก้ไขคำถามพร้อมรายละเอียดเพิ่มเติม ฉันจะตรวจสอบบางอย่างออก ProxyCommand, ขอบคุณสำหรับทิป
Budius

ฉันเดาว่าปัญหาที่ใหญ่ที่สุดที่ฉันมีคือตัวอย่างส่วนใหญ่ได้กำหนดชื่อโฮสต์ / IP และในกรณีของฉันฉันไม่มีความคิด REMOTE1 ชื่อโฮสต์ / IP ฉันต้องการเพียงแค่ใช้การเชื่อมต่อถาวรที่มีอยู่บนพอร์ตอีกครั้ง 16864
Budius

พีซีของคุณบน LAN1 หรือไม่ และคุณมีการตั้งค่าการส่งต่อพอร์ตที่เราเตอร์ NAT ของ LAN1 หรือไม่
barlop

สวัสดี @barlop เป็นคำถามเก่าฉันได้รับใหม่ถามว่าจะทำอย่างไรกับ Chromebook ใช่, PC และ LAN ทั้งสองอยู่ในเครือข่ายท้องถิ่นเดียวกัน ฉันมีการเข้าถึงทางกายภาพและรูทบน LAN
Budius

คำตอบ:


3

ก่อนตั้งค่าเพื่อให้คุณสามารถ ssh จากพีซีของคุณ "โดยตรง" ถึง remote1:

ใน. ssh / config ของคุณ:

Host remote1
  Proxycommand ssh -q -l <myuser.on.lan1> lan1 nc -w 600 localhost 16864

ตรวจสอบให้แน่ใจว่าติดตั้ง netcat (คำสั่ง nc) บน lan1

ตอนนี้คุณควรจะสามารถ ssh จากพีซีของคุณด้วย:

ssh <myuser.on.remote1>@remote1

เมื่อใช้งานได้ใช้:

ssh -L8888:localhost:9091 <myuser.on.remote1>@remote1

และคุณสามารถเข้าถึงการส่งสัญญาณบนรีโมต 1: 9091 ผ่านโลคอลโฮสต์: 8888


ขอบคุณสำหรับคำตอบ. ฟังดูเหมือนเป็นสิ่งที่ฉันต้องการ ฉันจะสามารถทดสอบได้ในภายหลังคืนนี้เจ้าฉันจะรายงานกลับ
Budius

PERFECT!! =] ในตอนท้ายฉันใช้การส่งข้อมูลบนพอร์ตเดียวกันกับที่เปิดขึ้นและฉันสามารถใช้เทคนิคเดียวกันเพื่อขยายไปยังบริการอื่น ๆ ที่ฉันต้องการเรียกใช้จากระยะไกล นั่นคือคำสั่งสุดท้ายของฉัน: ssh -L9091:localhost:9091 budius@remote -N (-N ในตอนท้ายเพื่อให้พอร์ตเปิดอยู่และฉันสามารถเข้าถึงผ่านเบราว์เซอร์ได้)
Budius
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.