ทำความเข้าใจอุโมงค์ SSH


15

ฉันมีเซิร์ฟเวอร์ linux (Ubuntu) ที่ฉันสามารถเข้าถึงรูทผ่าน ssh (พอร์ต 22) เท่านั้น บนเซิร์ฟเวอร์นั้นมีฐานข้อมูล MySQL กำลังรับฟังพอร์ต 3306 เป็นไปได้ไหมที่จะใช้ผงสำหรับอุดรู (บนเครื่องของฉัน) และการสร้างช่องสัญญาณ (บนเครื่อง linux) เพื่อสร้างช่องสัญญาณจากพอร์ตในเครื่องของฉัน (พูด 4000) เซิร์ฟเวอร์ linux ที่พอร์ต 22 และจากเซิร์ฟเวอร์ไปยังตัวเองที่พอร์ต 3306?

คำตอบ:


20

ฉันวาดภาพร่างบางส่วน

เครื่องที่คำสั่งอุโมงค์ SSH พิมพ์ (หรือในกรณีของคุณ: สีโป๊วกับการขุดเจาะอุโมงค์จะเริ่มต้น) เรียกว่า»โฮสต์ของคุณ«

ssh tunnel เริ่มต้นจากโลคัล


ssh tunnel เริ่มต้นจากระยะไกล

บทนำ

  1. ท้องถิ่น: -L Specifies that the given port on the local (client) host is to be forwarded to the given host and port on the remote side.

    ssh -L sourcePort:forwardToHost:onPort connectToHostหมายถึง: เชื่อมต่อกับ ssh ไปยังconnectToHostและส่งต่อความพยายามในการเชื่อมต่อทั้งหมดไปยังโลคัล sourcePortไปยังพอร์ตonPortบนเครื่องที่เรียกว่าforwardToHostซึ่งสามารถเข้าถึงได้จากconnectToHostเครื่อง

  2. ระยะไกล: -R Specifies that the given port on the remote (server) host is to be forwarded to the given host and port on the local side.

    ssh -R sourcePort:forwardToHost:onPort connectToHostหมายถึง: เชื่อมต่อกับ ssh ไปยังconnectToHostและส่งต่อความพยายามในการเชื่อมต่อทั้งหมดไปยังรีโมท sourcePortไปยังพอร์ตonPortบนเครื่องที่เรียกว่าforwardToHostซึ่งสามารถเข้าถึงได้จากเครื่องท้องถิ่นของคุณ

ตัวอย่างของคุณ

ภาพแรกแสดงถึงสถานการณ์ของคุณ กล่องสีฟ้าที่เรียกว่าyour hostเป็นเครื่อง Windows ของคุณที่คุณเริ่ม Putty ไปยังเซิร์ฟเวอร์ Ubuntu ของคุณที่เรียกว่าremotehostในภาพของฉัน การเชื่อมต่อกับพอร์ตสีเขียว (ในหมายเลขพอร์ตเคสของคุณ4000) จะถูกส่งต่อไปยังพอร์ต MySQL สีชมพู3306ของlocalhostเครื่องเซิร์ฟเวอร์ Ubuntu ของคุณ (เช่นเซิร์ฟเวอร์ Ubuntu เอง)

ในการตั้งค่าด้วย Putty

เริ่ม Putty และป้อนการตั้งค่าการเชื่อมต่อตามปกติของคุณ (ชื่อโฮสต์หรือที่อยู่ IP) ในแผนผังทางด้านซ้ายให้นำทางไป

การเชื่อมต่อ→ SSH →อุโมงค์

และสร้างอุโมงค์โลคัลใหม่พร้อมพอร์ตต้นทาง4000(123 ในภาพ) และปลายทางlocalhost:3306(localhost: 456 ในภาพ)

อย่าลืมที่จะคลิกAdd

จากนั้นกลับไปที่เซสชันและคลิกบันทึกเพื่อรักษาการตั้งค่าของคุณในครั้งต่อไป ตอนนี้คุณสามารถใช้การเชื่อมต่อที่บันทึกไว้เพื่อล็อกอินเข้าสู่เซิร์ฟเวอร์ของคุณและหลังจากที่คุณล็อกอินสำเร็จทุกครั้งที่คุณเชื่อมต่อกับพอร์ต 4000 บนโฮสต์ของคุณคุณจะเชื่อมต่อกับพอร์ต 3306 บนเซิร์ฟเวอร์ Ubuntu

สร้างอุโมงค์ไปข้างหน้าด้วยผงสำหรับอุดรู


ดีมากขอบคุณสำหรับภาพประกอบ ฉันขอขอบคุณที่คุณเพิ่มอุโมงค์ประเภท "ระยะไกล" ซึ่งฉันไม่ได้ครอบคลุมในคำตอบของฉัน
Guss

1
คำตอบนี้ยอดเยี่ยม
Mauricio Pasquier Juan

2
คำตอบที่น่าประทับใจและเป็นตัวอย่างมาก +1
rkachach

1
วิธีนี้มีคะแนนน้อยจึงเป็นความอัปยศ
Ryan Fisher

1
ฉันรักภาพร่างนี้ รูปภาพมีค่านับพันคำ
qartal

16

คำตอบง่ายๆคือใช่ แต่โปรดทราบว่าอุโมงค์เริ่มทำงานจริงในคอมพิวเตอร์ของคุณ วิธีการทำงานคือคุณสร้างการเชื่อมต่อ SSH ไปยังเซิร์ฟเวอร์ (ซึ่งปลอดภัย) จากนั้นสั่งให้ SSH ฟังพอร์ตที่ด้านข้างของคุณและส่งต่อการเชื่อมต่อใด ๆ ก็ตามที่เข้ามา - ไปยังพอร์ตเฉพาะบนที่อยู่โฮสต์ที่เฉพาะเจาะจง ฝั่งเซิร์ฟเวอร์ เป้าหมายของอุโมงค์ไม่จำเป็นต้องเป็นเซิร์ฟเวอร์เดียวกัน - อาจเป็นที่อยู่อื่นที่ถูกต้องซึ่งในกรณีที่ไม่ใช่เซิร์ฟเวอร์ที่ใช้เซิร์ฟเวอร์ SSH เอง - จะเห็นการเชื่อมต่อขาเข้าราวกับว่ามาจากเซิร์ฟเวอร์ SSH แทน จากลูกค้าของคุณ

หากต้องการตั้งค่าให้เปิดกล่องโต้ตอบการกำหนดค่า Putty เลือกการตั้งค่าการเชื่อมต่อที่คุณใช้ในการเข้าถึงเซิร์ฟเวอร์ของคุณและคลิก "โหลด" (ไม่ใช่ "เปิด") จากนั้นในต้นไม้ทางด้านซ้ายให้ไปที่ Connection-> SSH-> Tunnels และสร้างอุโมงค์ "local" ใหม่ที่มีพอร์ตต้นทาง 4000 และ "localhost: 3306" ปลายทาง (เนื่องจากที่อยู่ปลายทางได้รับการแก้ไขบนเซิร์ฟเวอร์ จากมุมมองของเซิร์ฟเวอร์พอร์ต MySQL อยู่บนโลคอลโฮสต์) จากนั้นกลับไปที่ "เซสชัน" และคลิก "บันทึก" เพื่อเก็บการตั้งค่าของคุณในครั้งต่อไป ตอนนี้คุณสามารถใช้การเชื่อมต่อที่บันทึกไว้เพื่อล็อกอินเข้าสู่เซิร์ฟเวอร์ของคุณและหลังจากที่คุณล็อกอินสำเร็จทุกครั้งที่คุณเชื่อมต่อกับพอร์ต 4000 บนคอมพิวเตอร์ของคุณคุณจะเชื่อมต่อกับพอร์ต 3306 บนเซิร์ฟเวอร์

หากคุณจริงจังกับอุโมงค์และเรียกใช้ไคลเอนต์ MS-Windows ฉันขอแนะนำให้ดูที่Putty Tunnel Managerซึ่งใช้ Putty เพื่อตั้งค่าและเรียกใช้อุโมงค์อย่างง่ายดายโดยไม่จำเป็นต้องมีคอนโซล putty ที่เปิดอยู่

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