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

Native SSH Port Forwarding (Tunneling) บน Windows 10

ในบทความนี้เราจะแสดงวิธีใช้เซิร์ฟเวอร์ 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 ระยะไกล รูปแบบการเชื่อมต่อทั่วไปแสดงอยู่ด้านล่าง

Native SSH Port Forwarding (Tunneling) บน Windows 10

หากต้องการสร้างช่องสัญญาณ SSH โดยใช้ไคลเอ็นต์ Windows 10 SSH ในตัว (เป็นส่วนหนึ่งของ Windows ที่เริ่มต้นจาก Windows 10 1809 และ Windows Server 2019) ให้เรียกใช้คำสั่งนี้:

ssh -L 8888:192.168.1.90:3389 [email protected]

หากต้องการให้อุโมงค์ข้อมูล SSH ทำงานในพื้นหลัง ให้เพิ่ม –f พารามิเตอร์.

Native SSH Port Forwarding (Tunneling) บน Windows 10

ในการเชื่อมต่อกับเดสก์ท็อปคอมพิวเตอร์ระยะไกลผ่านช่องสัญญาณ SSH คุณต้องเชื่อมต่อกับพอร์ต 8888 ในเครื่องคอมพิวเตอร์ของคุณโดยใช้ไคลเอ็นต์ RDP (mstsc.exe):

127.0.0.1:8888

Native SSH Port Forwarding (Tunneling) บน Windows 10

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

Native SSH Port Forwarding (Tunneling) บน Windows 10

โปรดทราบว่าหากคุณส่งต่อทราฟฟิกแอปที่ไม่ได้เข้ารหัส ทราฟฟิกนั้นจะถูกส่งผ่านการเข้ารหัสผ่านเครือข่ายสาธารณะ การรับส่งข้อมูลดังกล่าวจะได้รับการเข้ารหัสที่ปลายด้านหนึ่งของการเชื่อมต่อ SSH ของคุณและถอดรหัสที่ปลายอีกด้านหนึ่ง

คอมพิวเตอร์เครื่องอื่นๆ ในเครือข่ายท้องถิ่นของคุณยังสามารถใช้โหมดนี้เพื่อเชื่อมต่อกับเซิร์ฟเวอร์ RDP แม้ว่าจะไม่อนุญาตให้มีการเชื่อมต่อโดยตรง (ทั้งผ่าน SSH และผ่าน RDP) โดยจะต้องเชื่อมต่อผ่านไคลเอนต์ RDP ไปยังพอร์ตหมายเลข 8888 บนคอมพิวเตอร์ของคุณโดยสร้างช่องสัญญาณ SSH:

mstsc.exe /v 10.10.1.220:8888

Native SSH Port Forwarding (Tunneling) บน Windows 10

การส่งต่อ TCP ระยะไกลไปยังเครื่องคอมพิวเตอร์

มีกรณีการใช้งานช่องสัญญาณ SSH อื่น - การส่งต่อ TCP ระยะไกล การใช้อุโมงค์ข้อมูล SSH คุณสามารถอนุญาตให้เซิร์ฟเวอร์ระยะไกลเข้าถึงพอร์ตในเครื่องบนคอมพิวเตอร์ของคุณหรือพอร์ตบนคอมพิวเตอร์เครื่องอื่นในเครือข่ายท้องถิ่นของคุณ ตัวอย่างเช่น คุณต้องการให้เซิร์ฟเวอร์ภายนอก (200.168.1.90) เข้าถึงไซต์อินทราเน็ตของคุณ (ไม่ได้เผยแพร่ทางอินเทอร์เน็ต) หากต้องการสร้างช่องสัญญาณ SSH ย้อนกลับ ให้ใช้คำสั่งนี้:

ssh -R 8080:internalwww:80 [email protected]

ในการเข้าถึงเว็บไซต์ internalwwww จากเซิร์ฟเวอร์ SSH ระยะไกล ก็เพียงพอที่จะพิมพ์ที่อยู่นี้ในเบราว์เซอร์:https://localhost:8080

ใน Windows ทุกรุ่น คุณสามารถสร้างกฎการส่งต่อพอร์ตได้โดยใช้ netsh interface portproxy command

เมื่อใช้ SSH tunnels คุณสามารถสร้าง port forwarding chains ได้ หากต้องการเปิดหรือปิดช่องสัญญาณ SSH ให้เพิ่มคำสั่งใดคำสั่งหนึ่งต่อไปนี้ในไฟล์กำหนดค่า OpenSSH (%programdata%\ssh\sshd_config ):

AllowStreamLocalForwarding yes
AllowTcpForwarding remote