ในบทความนี้เราจะแสดงวิธีใช้เซิร์ฟเวอร์ Windows 10 OpenSSH ในตัวเพื่อส่งต่อพอร์ตผ่าน ช่องสัญญาณ SSH . การส่งต่อพอร์ต SSH ช่วยให้คุณสร้างช่องสัญญาณ (ส่งต่อ) พอร์ตแอปจากเครื่องคอมพิวเตอร์ไปยังเซิร์ฟเวอร์ระยะไกลและในทางกลับกัน SSH tunneling ก่อนหน้านี้ใช้ในสภาพแวดล้อม Linux/Unix เท่านั้น แต่วันนี้คุณสามารถใช้ใน Windows 10/Windows Server 2016 ได้เช่นกัน นี่คือกรณีศึกษาเกี่ยวกับวิธีใช้การเชื่อมต่อ RDP ผ่านช่องสัญญาณ SSH (พอร์ต TCP 22) บน Windows
การขุดอุโมงค์ SSH ส่วนใหญ่จะใช้ในสถานการณ์เมื่อคุณต้องการเชื่อมต่อกับคอมพิวเตอร์ระยะไกลหลังไฟร์วอลล์ ตัวอย่างเช่น คุณมี Windows Server ที่เปิดเฉพาะพอร์ต SSH (TCP 22) พอร์ตอื่นๆ ทั้งหมดถูกบล็อกโดยไฟร์วอลล์ฮาร์ดแวร์หรือไฟร์วอลล์ Windows งานของคุณคือการเชื่อมต่อกับ Windows Server โดยใช้ไคลเอนต์ RDP ดูเหมือนเป็นไปไม่ได้เนื่องจากพอร์ตเดสก์ท็อประยะไกล 3389 ถูกบล็อกโดยไฟร์วอลล์ อย่างไรก็ตาม คุณสามารถใช้เทคนิคการส่งต่อพอร์ตผ่านอุโมงค์ SSH ได้
ต่อไปนี้คือสถานการณ์การใช้งานทั่วไปของช่องสัญญาณ SSH:
- การส่งต่อ TCP ในเครื่อง เป็นพอร์ตในเครื่องที่ส่งต่อไปยังเซิร์ฟเวอร์ระยะไกล
- การส่งต่อ TCP ระยะไกล เป็นพอร์ตระยะไกลที่ส่งต่อไปยังเครื่องคอมพิวเตอร์
- อุโมงค์ SSH คู่ เชื่อมต่อคอมพิวเตอร์โดยไม่มีที่อยู่ IP สาธารณะเฉพาะหลัง NAT ผ่านเซิร์ฟเวอร์ SSH (หากไม่มีโซลูชัน OpenVPN)
การเข้าถึง RDP ผ่านอุโมงค์ SSH (การส่งต่อ TCP ในเครื่อง)
ในโหมดนี้ คุณสร้างพอร์ต TCP ภายในเครื่องบนคอมพิวเตอร์ของคุณ การเชื่อมต่อทั้งหมดไปยังพอร์ตนี้จะถูกส่งต่อไปยังพอร์ตที่ระบุบนเซิร์ฟเวอร์ระยะไกลผ่านช่องสัญญาณ SSH ในตัวอย่างนี้ เราจะสร้างพอร์ตในเครื่อง 8888 และการเชื่อมต่อจะถูกส่งต่อไปยังพอร์ต RDP 3389 บนคอมพิวเตอร์ Windows ระยะไกล รูปแบบการเชื่อมต่อทั่วไปแสดงอยู่ด้านล่าง
หากต้องการสร้างช่องสัญญาณ SSH โดยใช้ไคลเอ็นต์ Windows 10 SSH ในตัว (เป็นส่วนหนึ่งของ Windows ที่เริ่มต้นจาก Windows 10 1809 และ Windows Server 2019) ให้เรียกใช้คำสั่งนี้:
ssh -L 8888:192.168.1.90:3389 [email protected]
ในการเชื่อมต่อกับเดสก์ท็อปคอมพิวเตอร์ระยะไกลผ่านช่องสัญญาณ SSH คุณต้องเชื่อมต่อกับพอร์ต 8888 ในเครื่องคอมพิวเตอร์ของคุณโดยใช้ไคลเอ็นต์ RDP (mstsc.exe):
127.0.0.1:8888
เข้าสู่ระบบคอมพิวเตอร์ระยะไกลและทำงานอย่างปลอดภัยในเซสชัน RDP (แต่คุณจำได้ว่าพอร์ต 3389 ยังคงปิดอยู่โดยไฟร์วอลล์) คุณสามารถใช้เครื่องมือ TCPView เพื่อให้แน่ใจว่าการเชื่อมต่อ RDP อยู่ในเครื่อง (การเชื่อมต่อ RDP เริ่มต้นโดยเซิร์ฟเวอร์ SSH ที่ทำงานอยู่ในเครื่อง)
โปรดทราบว่าหากคุณส่งต่อทราฟฟิกแอปที่ไม่ได้เข้ารหัส ทราฟฟิกนั้นจะถูกส่งผ่านการเข้ารหัสผ่านเครือข่ายสาธารณะ การรับส่งข้อมูลดังกล่าวจะได้รับการเข้ารหัสที่ปลายด้านหนึ่งของการเชื่อมต่อ SSH ของคุณและถอดรหัสที่ปลายอีกด้านหนึ่ง
คอมพิวเตอร์เครื่องอื่นๆ ในเครือข่ายท้องถิ่นของคุณยังสามารถใช้โหมดนี้เพื่อเชื่อมต่อกับเซิร์ฟเวอร์ RDP แม้ว่าจะไม่อนุญาตให้มีการเชื่อมต่อโดยตรง (ทั้งผ่าน SSH และผ่าน RDP) โดยจะต้องเชื่อมต่อผ่านไคลเอนต์ RDP ไปยังพอร์ตหมายเลข 8888 บนคอมพิวเตอร์ของคุณโดยสร้างช่องสัญญาณ SSH:
mstsc.exe /v 10.10.1.220:8888
การส่งต่อ TCP ระยะไกลไปยังเครื่องคอมพิวเตอร์
มีกรณีการใช้งานช่องสัญญาณ SSH อื่น - การส่งต่อ TCP ระยะไกล การใช้อุโมงค์ข้อมูล SSH คุณสามารถอนุญาตให้เซิร์ฟเวอร์ระยะไกลเข้าถึงพอร์ตในเครื่องบนคอมพิวเตอร์ของคุณหรือพอร์ตบนคอมพิวเตอร์เครื่องอื่นในเครือข่ายท้องถิ่นของคุณ ตัวอย่างเช่น คุณต้องการให้เซิร์ฟเวอร์ภายนอก (200.168.1.90) เข้าถึงไซต์อินทราเน็ตของคุณ (ไม่ได้เผยแพร่ทางอินเทอร์เน็ต) หากต้องการสร้างช่องสัญญาณ SSH ย้อนกลับ ให้ใช้คำสั่งนี้:
ssh -R 8080:internalwww:80 [email protected]
ในการเข้าถึงเว็บไซต์ internalwwww จากเซิร์ฟเวอร์ SSH ระยะไกล ก็เพียงพอที่จะพิมพ์ที่อยู่นี้ในเบราว์เซอร์:https://localhost:8080
netsh interface portproxy command
เมื่อใช้ SSH tunnels คุณสามารถสร้าง port forwarding chains ได้ หากต้องการเปิดหรือปิดช่องสัญญาณ SSH ให้เพิ่มคำสั่งใดคำสั่งหนึ่งต่อไปนี้ในไฟล์กำหนดค่า OpenSSH (%programdata%\ssh\sshd_config ):
AllowStreamLocalForwarding yes AllowTcpForwarding remote