SSH3: เชลล์ที่ปลอดภัยยิ่งขึ้นและเร็วขึ้นโดยใช้ HTTP/3
เพิ่งเป็นที่รู้จัก การเปิดตัวเวอร์ชันทดลองครั้งแรกอย่างเป็นทางการ ของเซิร์ฟเวอร์และไคลเอนต์สำหรับ โปรโตคอล SSH3 ออกแบบเป็นส่วนเสริมของโปรโตคอล HTTP3 และใช้ QUIC (อิงตาม UDP), TLS 1.3 ที่ใช้ประโยชน์จากกลไก HTTP สำหรับการตรวจสอบผู้ใช้ ตลอดจนสร้างช่องทางการสื่อสารที่ปลอดภัย
สส 3 ใช้กลไกการอนุญาตตามโปรโตคอล HTTPซึ่งอนุญาตวิธีการตรวจสอบสิทธิ์แบบใหม่ นอกเหนือจากการตรวจสอบสิทธิ์แบบคลาสสิกโดยใช้รหัสผ่านและคู่คีย์ นอกจากนี้ใน SSH3 คุณสามารถกำหนดค่าการเข้าถึงเซิร์ฟเวอร์ระยะไกลผ่านผู้ให้บริการข้อมูลประจำตัวขององค์กรหรือด้วยบัญชี Google หรือ GitHub SSH3 ทำงานบน HTTP/3 และ QUIC และนอกเหนือจากการส่งต่อ TCP ปกติแล้ว ยังเสนอการส่งต่อพอร์ต UDP และการสร้างเซสชันที่รวดเร็วและปลอดภัยยิ่งขึ้นอีกด้วย
เกี่ยวกับ SSH3
ทางผู้พัฒนาโครงการกล่าวถึงการสร้าง SSH3 เกิดขึ้นจากการตรวจสอบโปรโตคอล SSH ทั้งหมดดำเนินการโดยกลุ่มนักวิจัยอิสระที่แยกจากทีมที่ทำงานในโครงการเช่น OpenSSH และการใช้งานอื่นๆ ของโปรโตคอล SSH แบบคลาสสิก ใน SSH3 ความหมายของโปรโตคอล SSH แบบคลาสสิกถูกนำมาใช้ผ่านกลไก HTTP ซึ่งไม่เพียงแต่ช่วยเพิ่มความสามารถเท่านั้น แต่ยังช่วยให้แน่ใจว่ากิจกรรมที่เกี่ยวข้องกับ SSH จะถูกซ่อนไว้ท่ามกลางการรับส่งข้อมูลอื่นๆ เหนือสิ่งอื่นใด SSH3 อนุญาตให้มีการปรับปรุงต่อไปนี้ผ่านโปรโตคอล SSH2 ไม่สามารถให้ได้ เช่นเดียวกับฟีเจอร์ OpenSSH ยอดนิยมมากมาย:
- การสร้างเซสชันเร็วขึ้นอย่างเห็นได้ชัด
- วิธีการตรวจสอบสิทธิ์ HTTP ใหม่ เช่น OAuth 2.0 และ OpenID Connect นอกเหนือจากการตรวจสอบสิทธิ์ SSH แบบคลาสสิก
- กำลังแยกวิเคราะห์ ~/.ssh/authorized_keys บนเซิร์ฟเวอร์
แยกวิเคราะห์ ~/.ssh/config บนไคลเอนต์และจัดการตัวเลือก Hostname, User และ Portconfig IdentityFile (ตัวเลือกอื่น ๆ จะถูกละเว้นในปัจจุบัน)
การรับรองความถูกต้องของเซิร์ฟเวอร์ตามใบรับรอง - ความทนทานต่อการโจมตีด้วยการสแกนพอร์ต: เซิร์ฟเวอร์ SSH3 ของคุณอาจไม่ปรากฏแก่ผู้ใช้อินเทอร์เน็ตรายอื่น
- การส่งต่อพอร์ต UDP – ตอนนี้คุณสามารถเข้าถึง QUIC, DNS, RTP หรือเซิร์ฟเวอร์ที่ใช้ UDP ใด ๆ ที่สามารถเข้าถึงได้จากโฮสต์ SSH3 ของคุณเท่านั้น
- ใบรับรอง X.509: ตอนนี้คุณสามารถใช้ใบรับรอง HTTPS แบบคลาสสิกเพื่อตรวจสอบเซิร์ฟเวอร์ SSH3 ของคุณได้ กลไกนี้มีความปลอดภัยมากกว่ากลไกคีย์โฮสต์ SSHv2 แบบคลาสสิก
- ความสามารถในการซ่อนเซิร์ฟเวอร์หลังลิงก์ลับ
- คุณสมบัติทั้งหมดเปิดใช้งานโดยโปรโตคอล QUIC สมัยใหม่: รวมถึงการโยกย้ายการเชื่อมต่อและการเชื่อมต่อแบบหลายเส้นทาง
- ใช้การตรวจสอบสิทธิ์คีย์สาธารณะ ssh-agent โดยอัตโนมัติ
- ตัวแทน SSH ส่งต่อเพื่อใช้คีย์ในเครื่องของคุณบนเซิร์ฟเวอร์ระยะไกลของคุณ
- รับรองความถูกต้องผู้ใช้แบบไม่ใช้คีย์อย่างปลอดภัยโดยใช้ OpenID Connect
ในการเข้ารหัสช่องทางการสื่อสาร SSH3 ใช้โปรโตคอล TLS 1.3 และวิธีการดั้งเดิมที่ใช้รหัสผ่านและกุญแจสาธารณะ (RSA และ EdDSA/ed25519) ก็สามารถใช้ได้ นอกจากนี้ SSH3 ยังเสนอตัวเลือกในการใช้วิธีการตามโปรโตคอล OAuth 2.0 ซึ่งช่วยให้สามารถถ่ายโอนการตรวจสอบสิทธิ์ไปยังผู้ให้บริการภายนอกได้
อื่น ๆ จุดแข็งของ SSH3 คือให้การสร้างเซสชันได้เร็วกว่า SSH2 อย่างมาก ตัวอย่างเช่น การสร้างเซสชันใหม่ด้วย SSH2 อาจใช้เวลาวนซ้ำเครือข่าย 5 ถึง 7 ครั้ง (ไปกลับ) ซึ่งผู้ใช้สามารถสังเกตเห็นได้ง่ายเนื่องจาก SSH3 ต้องการการวนซ้ำเพียง 3 ครั้งเท่านั้น
หากคุณสนใจที่จะเรียนรู้เพิ่มเติม คุณควรรู้ว่าไคลเอนต์และเซิร์ฟเวอร์เขียนด้วยภาษา Go และเผยแพร่ภายใต้ลิขสิทธิ์ Apache 2.0 คุณสามารถศึกษารายละเอียดได้ ในลิงค์ต่อไปนี้.
นอกจากนี้ เป็นที่น่าสังเกตว่า SSH3 ยังอยู่ในช่วงทดลองและไม่แนะนำให้ใช้กับการใช้งานจริงหรือสภาพแวดล้อมที่สำคัญ และด้วยเหตุนี้ แนะนำให้ติดตั้งเพื่อเรียนรู้เกี่ยวกับฟังก์ชันการทำงานหรือเพื่อให้สามารถทดสอบได้เท่านั้น
ดาวน์โหลดและติดตั้ง SSH3
สำหรับ สนใจที่จะนำเซิร์ฟเวอร์ SSH3 ไปใช้ทดสอบ คุณสามารถทำได้โดยรวบรวมซอร์สโค้ดด้วย Go โดยทำตามคำแนะนำที่เราแชร์ด้านล่าง
git clone https://github.com/francoismichel/ssh3 cd ssh3 go build -o ssh3 cmd/ssh3/main.go CGO_ENABLED=1 go build -o ssh3-server cmd/ssh3-server/main.go
เมื่อเสร็จแล้ว ตอนนี้เราจะเพิ่มตัวแปรสภาพแวดล้อมของเราใน .bashrc ด้วย:
export PATH=$PATH:/path/to/the/ssh3/directory
เกี่ยวกับการใช้งานเซิร์ฟเวอร์ เนื่องจาก SSH3 ทำงานบน HTTP3 จึงจำเป็นต้องมีใบรับรองและสามารถสร้างใบรับรองได้ด้วยสคริปต์:
sh ./generate_openssl_selfsigned_certificate.sh
สุดท้ายนี้ ฉันขอเชิญคุณอ่านเอกสารเกี่ยวกับการใช้และการใช้งานฟังก์ชันเพิ่มเติมใน ลิงค์ต่อไปนี้