Computer >> คอมพิวเตอร์ >  >> ระบบ >> Linux

วิธีใช้ Reverse SSH Tunnel เพื่ออนุญาตการเชื่อมต่อภายนอกกับพีซีของคุณ

วิธีใช้ Reverse SSH Tunnel เพื่ออนุญาตการเชื่อมต่อภายนอกกับพีซีของคุณ

หากคุณโชคดีพอที่ผู้ให้บริการอินเทอร์เน็ต (ISP) ของคุณให้ที่อยู่ IP เฉพาะ คุณสามารถตั้งค่าเซิร์ฟเวอร์หลักและทำให้อินเทอร์เน็ตใช้งานได้โดยเพิ่มกฎการส่งต่อพอร์ตสองสามข้อให้กับเราเตอร์ของคุณ แต่ถ้า ISP ของคุณทำให้คุณแชร์ IP นั้นกับเพื่อนบ้าน การส่งต่อพอร์ตจะไม่ช่วย ผู้ให้บริการรายอื่นเพียงแค่บล็อกการเชื่อมต่อขาเข้าผ่านกฎไฟร์วอลล์

คุณข้ามข้อจำกัดเหล่านี้ได้ด้วยความช่วยเหลือจากเซิร์ฟเวอร์ส่วนตัวเสมือน ทุกอย่างจะได้ผล แม้ว่าจะมี RAM น้อยกว่า 512MB ก็ตาม สิ่งที่ต้องทำคือเปลี่ยนเส้นทางการรับส่งข้อมูลเครือข่าย สิ่งนี้เบามากสำหรับ CPU และ RAM เซิร์ฟเวอร์จะได้รับการเชื่อมต่อขาเข้าและเปลี่ยนเส้นทางไปยังคอมพิวเตอร์ของคุณผ่านสิ่งที่เรียกว่า "ช่องสัญญาณ SSH ย้อนกลับ" วิธีนี้ทำให้คุณสามารถตั้งค่าโฮมเซิร์ฟเวอร์ประเภทใดก็ได้ โดยมีค่าใช้จ่ายรายเดือนเพียงเล็กน้อย

ลองนึกภาพว่าคุณสร้างเซิร์ฟเวอร์ NextCloud เพื่ออัปโหลด/ซิงโครไนซ์ไฟล์ของคุณ คุณได้รับความเป็นส่วนตัวในการมีไฟล์เหล่านั้นบนเซิร์ฟเวอร์ที่บ้านของคุณ จากนั้นคุณสามารถซื้อฮาร์ดไดรฟ์ขนาด 6TB เพื่อรับพื้นที่ทั้งหมดที่คุณต้องการ คุณต้องจ่ายค่าไฟฟ้ารายเดือนและน้อยกว่า $5/เดือนสำหรับเซิร์ฟเวอร์ส่วนตัวเสมือน นั่นเป็นวิธีที่ถูกกว่าค่าบริการรายเดือนสำหรับเซิร์ฟเวอร์ที่มีพื้นที่ 6TB

หมายเหตุ :ใช้ได้เฉพาะกับการเปลี่ยนเส้นทางการรับส่งข้อมูลเครือข่าย TCP TCP ถูกใช้โดยสิ่งต่างๆ เช่น เว็บเซิร์ฟเวอร์ (พอร์ต 80/tcp) UDP ถูกใช้โดยเซิร์ฟเวอร์เกมบางตัว (ไม่ใช่ทั้งหมด) เช่น Counter Strike (พอร์ต 27015/UDP) การขุดอุโมงค์ UDP เป็นไปได้ แต่มี “การแฮ็ก” บางอย่างซึ่งอาจเป็นหัวข้อของบทช่วยสอนในอนาคต

Windows 10 มีไคลเอ็นต์ SSH ในตัวแล้ว

ไม่จำเป็นต้องใช้ PuTTY เพื่อเริ่มต้นการเชื่อมต่อ SSH อีกต่อไป อันที่จริง สำหรับบทช่วยสอนนี้ คุณจะใช้ไคลเอนต์ในตัวนี้เพื่อตั้งค่าอุโมงค์ข้อมูล อ่านบทแนะนำเกี่ยวกับไคลเอ็นต์ OpenSSH ของ Windows 10 หากยังไม่คุ้นเคย

เตรียมเซิร์ฟเวอร์ส่วนตัวเสมือนสำหรับการเชื่อมต่อทันเนล

สร้างเซิร์ฟเวอร์ส่วนตัวเสมือนกับผู้ให้บริการที่คุณชื่นชอบ เช่น DigitalOcean, Linode, Vultr หรืออะไรก็ได้ที่คุณต้องการ สิ่งสำคัญที่สุดคือการเลือกตำแหน่งเซิร์ฟเวอร์ที่ใกล้กับคุณมากที่สุดเพื่อลดเวลาแฝงของเครือข่าย พยายามตั้งค่าเซิร์ฟเวอร์ในลักษณะที่คุณจะเข้าสู่ระบบบัญชีรูทได้โดยตรง ควรใช้คีย์ SSH เพราะมันปลอดภัยกว่า สิ่งนี้จำเป็นหากคุณต้องการให้เซิร์ฟเวอร์รับฟังการเชื่อมต่อที่มาบนพอร์ตที่ต่ำกว่า 1024 ซึ่งเรียกว่าพอร์ตที่มีสิทธิพิเศษ

เปิดพรอมต์คำสั่ง (หรือเทอร์มินัลหากคุณใช้ Linux) และเข้าสู่ระบบเซิร์ฟเวอร์ผ่าน SSH

แก้ไขการตั้งค่าเซิร์ฟเวอร์ OpenSSH:

nano /etc/ssh/sshd_config

หากคุณไม่ได้เข้าสู่ระบบในฐานะ root แต่ในฐานะผู้ใช้ทั่วไป คุณจะต้องใช้คำสั่งนี้ มิฉะนั้น คุณจะไม่สามารถบันทึกไฟล์ได้:

sudo nano /etc/ssh/sshd_config

เลื่อนลงมาจนกว่าคุณจะพบตัวแปรที่เรียกว่า “GatewayPorts” บรรทัดอาจมีลักษณะดังนี้:#GatewayPorts no . ลบ # ก่อนหน้า (เพื่อยกเลิกความคิดเห็น) และเปลี่ยนบรรทัดเป็น GatewayPorts yes .

วิธีใช้ Reverse SSH Tunnel เพื่ออนุญาตการเชื่อมต่อภายนอกกับพีซีของคุณ

หากคุณหาบรรทัดนั้นไม่เจอ ให้เลื่อนลงมาจนสุดแล้วเพิ่มบรรทัดด้วยตัวคุณเอง:

GatewayPorts yes

กด Ctrl + X จากนั้นกด y และสุดท้าย Enter เพื่อบันทึกไฟล์

โหลด SSH daemon ใหม่เพื่อให้ได้รับการตั้งค่าใหม่

systemctl reload ssh.service

ออกจากเซสชัน SSH

exit

วิธีตั้งค่า Reverse SSH Tunnel

พารามิเตอร์คำสั่งจะเหมือนกันบนระบบปฏิบัติการ Linux, Windows และแม้แต่ BSD ไวยากรณ์ทั่วไปคือ:

ssh -R remote_port:host:localport your_username@IP-of-server
  • remote_port บอกให้เซิร์ฟเวอร์เปลี่ยนเส้นทางการเชื่อมต่อที่มากับพอร์ตนั้น
  • host บอกเซิร์ฟเวอร์ว่าควรเปลี่ยนเส้นทางการเชื่อมต่อไปยังที่อยู่ IP ใด 127.0.0.1 จะถูกใช้ที่นี่เพื่อเปลี่ยนเส้นทางไปยังคอมพิวเตอร์ของคุณเอง
  • localport แนะนำว่าควรเปลี่ยนเส้นทางแพ็กเก็ตข้อมูลพอร์ตใด ที่นี่ คุณควรใส่หมายเลขพอร์ตที่แอปพลิเคชันของคุณ ซึ่งติดตั้งอยู่ในเครื่องคอมพิวเตอร์ของคุณ รับฟัง

ตัวอย่างเช่น ในการส่งต่อการเชื่อมต่อทั้งหมดที่มาบนพอร์ต 80 (ไปยังเซิร์ฟเวอร์) และส่งไปยังพอร์ต 8080 บนเครื่องคอมพิวเตอร์ของคุณ คำสั่งจะเป็น:

ssh -R 80:127.0.0.1:8080 root@203.0.113.1

นี่ถือว่าคุณมีเว็บเซิร์ฟเวอร์ เช่น Apache หรือ Nginx ที่รับฟังพอร์ต 8080 บนเครื่องของคุณ แต่ถ้า Apache/Nginx กำลังฟังบนพอร์ตเริ่มต้น 80 ก็ไม่มีปัญหาในการใช้พอร์ตเดียวกันสองครั้งในคำสั่งก่อนหน้า (เนื่องจากอ้างอิงถึงพอร์ต 80 ในเซิร์ฟเวอร์อื่น)

ssh -R 80:127.0.0.1:80 root@203.0.113.1

ณ จุดนี้ ถ้ามีคนป้อนที่อยู่ IP ของเซิร์ฟเวอร์ส่วนตัวเสมือนของคุณในแถบที่อยู่ของเบราว์เซอร์ การเชื่อมต่อของพวกเขาจะถูกเปลี่ยนเส้นทางและให้บริการโดยคอมพิวเตอร์ในพื้นที่ของคุณ

วิธีใช้ Reverse SSH Tunnel เพื่ออนุญาตการเชื่อมต่อภายนอกกับพีซีของคุณ

ในภาพด้านบน มีการใช้เว็บเซิร์ฟเวอร์อย่างง่ายสำหรับ Chrome ซึ่งรับฟังพอร์ต 8887 เป็นค่าเริ่มต้น คุณสามารถลองตั้งค่านี้ด้วยตัวเองโดยติดตั้งแอพแล้วใช้คำสั่งดังในรูป

เป็นมูลค่าการกล่าวขวัญว่าเพื่อให้ทันเนลใช้งานได้ เซสชัน SSH ของคุณต้องยังคงเปิดใช้งานอยู่ หากต้องการปิดอุโมงค์ ให้พิมพ์ exit ในหน้าต่างพรอมต์คำสั่ง/เทอร์มินัล

บทสรุป

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

และคุณก็รู้ … สำรองข้อมูลสิ่งที่คุณไม่ต้องการเสี่ยงสูญเสียเสมอ!