เท่าที่ฉันสามารถบอกได้นี่เป็นข้อผิดพลาดใน WSL หวังว่า Microsoft จะแก้ไขในรุ่นต่อไป แต่สำหรับตอนนี้เราสามารถใช้แฮ็คที่น่าเกลียดนี้ได้เล็กน้อย
อัปเดต # 1 : ข้อบกพร่องอย่างแน่นอน พบปัญหานี้ใน Github พวกเขาเสนอวิธีแก้ปัญหาของการเปิดใช้งานเชลล์อีกครั้งสำหรับฉันเช่นกันหากคุณไม่ต้องการทำสิ่งนี้ทั้งหมด
TL; DR เพิ่มส่วนนี้เพื่อสิ้นสุดการกำหนดค่า SSH ของคุณ (โดยปกติจะอยู่ที่~/.ssh/config):
Host *
ProxyCommand nc %h %p %r
นี่คือสาเหตุที่ใช้งานได้: ปัญหา SSH ของเราไม่ใช่ปัญหาไฟร์วอลล์เพราะncและtelnetทำงานกับโฮสต์และพอร์ตเดียวกัน (ลองtelnet <host> <port>หรือnc <host> <port>: คุณควรเห็นบางสิ่งSSH-2.0-OpenSSH_6.6.1p1 Ubuntu-2ubuntu2.7) สิ่งนี้เราสามารถใช้เพื่อประโยชน์ของเรา
SSH อนุญาตให้ใช้พร็อกซีที่รับอินพุตมาตรฐานและส่งไปยังพอร์ตของเซิร์ฟเวอร์ผ่านProxyCommandตัวเลือก โดยปกติจะใช้ช่องสัญญาณไปยังเครือข่ายไปยังโฮสต์ที่ได้รับการป้องกันโดยใช้เซิร์ฟเวอร์ SSH ระหว่างป้อมปราการบางครั้งเรียกว่ากระโดดโฮสต์ (ดูลิงก์นี้สำหรับข้อมูลเพิ่มเติม)
แฮ็คนี้บอกให้ SSH ใช้พรอกซีที่ไม่มีโฮสต์ข้าม ดังนั้นจึงได้รับการจัดสรรทรัพยากร TCP ที่ล้มเหลวของ SSH โดยการผลักดันการจัดสรรทรัพยากรเครือข่ายทั้งหมดไปยัง Netcat ซึ่งทำงานได้ SSH ทำสิ่ง SSH โดยไม่มีการเชื่อมต่อเครือข่ายและ Netcat ส่งข้อมูลดิบผ่านการเชื่อมต่อ TCP ไปยังเซิร์ฟเวอร์ SSH
คำเตือน: เนื่องจากสิ่งนี้จะปรับเปลี่ยนProxyCommandสำหรับโฮสต์ทั้งหมดฉันไม่ทราบว่ามันโต้ตอบกับโฮสต์การกำหนดค่า SSH อื่น ๆ ที่ใช้ProxyCommandอย่างไร ฉันมีเซิร์ฟเวอร์ไม่กี่แห่งที่ฉันสามารถทดสอบได้และฉันจะอัปเดตคำตอบนี้พร้อมผลลัพธ์ มีโอกาสที่ไม่มีผลข้างเคียงที่เป็นอันตราย แต่ฉันไม่สามารถรับประกันได้ว่า
อัปเดต # 2:ฉันทำการทดสอบกับเซิร์ฟเวอร์ของฉันสองสามตัวและนี่ก็ใช้งานได้ SSH ใช้รายการบนสุดในการกำหนดค่าเมื่อใช้หลายรายการ ดังนั้นProxyCommandปัจจุบันที่มีอยู่เหนือแฮ็คนี้จะแทนที่มัน เมื่อคำสั่ง SSH ใหม่ถูกดำเนินการคำสั่งจะอ่านการกำหนดค่า SSH อีกครั้งและหากไม่มีอื่นProxyCommandSSH จะใช้การแฮ็กของเราProxyCommandอนุญาตให้ใช้กับเซสชัน SSH "นอกสุด" เท่านั้น คำเตือน: ถ้าคุณใส่แฮ็คที่ด้านบนของไฟล์ปรับแต่ง (หรือเหนือรายการที่คุณพยายามที่จะ SSH ไป), เซสชัน SSH ที่ต้องการProxyCommandจะไม่สนใจคนอื่นProxyCommandและพยายามที่จะแก้ไขที่อยู่ของโฮสต์และเชื่อมต่อแทน โดยตรงกับ Netcat