OpenSSH 10.1: ทุกสิ่งใหม่ในเรื่องความปลอดภัย เครือข่าย และการกำหนดค่า

  • คำเตือนและการสนับสนุนสำหรับอัลกอริทึมหลังควอนตัมด้วย WarnWeakCrypto
  • บทวิจารณ์ QoS: DSCP ตามค่าเริ่มต้น, EF สำหรับการรับส่งข้อมูลแบบโต้ตอบ และการไม่รองรับ ToS
  • การปรับปรุงการทำงาน: ซ็อกเก็ตตัวแทนใน ~/.ssh/agent และตัวกรองอินพุต
  • การปรับปรุงในทางปฏิบัติ: SIGINFO, RefuseConnection, PKCS#11 Ed25519 และการแก้ไขจุดบกพร่องที่สำคัญ

OpenSSH 10.1

เกินกว่าป้ายเวอร์ชัน OpenSSH 10.1 รวมเส้นทางที่เริ่มต้นด้วยซีรีส์ 10: การโยกย้ายไปสู่การเข้ารหัสหลังควอนตัม การปรับปรุง QoS ให้ทันสมัยด้วย DSCP และการเพิ่มความแข็งแกร่งให้กับพื้นที่ที่มีความอ่อนไหวทางประวัติศาสตร์ (ตัวแทน คีย์ รีจิสทรี และการแยกวิเคราะห์พารามิเตอร์) ด้านล่างนี้คุณจะพบ การตรวจสอบคุณสมบัติใหม่ทั้งหมดอย่างละเอียด (พร้อมบริบทที่เพิ่มมูลค่า) รวมถึงแนวทางปฏิบัติในการนำไปใช้โดยไม่เกิดความประหลาดใจ

ต่อไปนี้เป็นรายการที่มี มีอะไรใหม่ในเวอร์ชันนี้, ยังมีจำหน่ายใน บันทึกอย่างเป็นทางการ.

ไฮไลท์และบริบทของการเปิดตัว

การเปิดตัวอย่างเป็นทางการของ OpenSSH 10.1 (6 ตุลาคม 2025) เน้นย้ำสามแกน: การป้องกันความปลอดภัยจากการเข้ารหัสควอนตัม เครือข่าย DSCP และการฆ่าเชื้ออินพุตนอกจากนี้ยังเชื่อมโยงการเปลี่ยนแปลงเฉพาะเจาะจงที่มีผลกระทบในการปฏิบัติงานสูง: จากเส้นทางซ็อกเก็ตตัวแทนไปยัง สัญญาณการวินิจฉัยใหม่.

ข้อเตือนใจสำคัญของโครงการ: การเปิดตัวในอนาคตจะละเว้นบันทึก SSHFP ที่ใช้ SHA‑1ในขณะที่ ssh-keygen -r ตอนนี้สร้างลายนิ้วมือ SSHFP ด้วย SHA‑256 ตามค่าเริ่มต้นเท่านั้น ปิดประตูสู่แฮชที่อ่อนแอ สำหรับการตรวจสอบ DNSSEC และคีย์โฮสต์

คำเตือนการเข้ารหัสที่ไม่ใช่โพสต์ควอนตัมและตัวเลือก WarnWeakCrypto ใหม่

OpenSSH 10.1 แนะนำคำเตือนเมื่อการเชื่อมต่อเจรจาการแลกเปลี่ยนคีย์ที่ ไม่ต้านทานการโจมตีหลังควอนตัมเป้าหมายคือการมุ่งเน้นไปที่ความเสี่ยงของ "เก็บข้อมูลตอนนี้ ถอดรหัสภายหลัง" และเร่งการเปลี่ยนแปลงในสภาพแวดล้อมที่มีความละเอียดอ่อน

พฤติกรรมนี้จะถูกควบคุมด้วย วอร์นวีคคริปโต (ตอน ssh_config) ซึ่งเปิดใช้งานตามค่าเริ่มต้น หากคุณกำลังทำการย้ายข้อมูลแบบค่อยเป็นค่อยไปหรือบำรุงรักษาโฮสต์เดิม คุณสามารถเลือกปิดการเตือนได้ ด้วยบล็อกจับคู่ ตัวอย่างเช่น:

จับคู่โฮสต์ unsafe.example.com WarnWeakCrypto ไม่

การเข้ารหัสและสถานะที่ทันสมัย: PQC, ไฮบริดและ SSHFP

ใน 10.0 ไคลเอนต์เปลี่ยนไปใช้ค่าเริ่มต้น mlkem768x25519‑sha256อัลกอริทึมโพสต์ควอนตัมแบบไฮบริดที่รวม เอ็มแอล-เคม (KEM NIST FIPS 203) กับ X25519 กลยุทธ์แบบผสมผสานนี้ช่วยให้มั่นใจได้ว่าแม้ว่าจะมีความก้าวหน้าทางการวิเคราะห์รหัสเกิดขึ้นที่ด้าน PQ คุณจะไม่แย่ไปกว่าการใช้ ECDH แบบคลาสสิก เพราะช่องยังคงความแข็งแกร่งของ X25519 ไว้

ด้วย 10.1 นอกเหนือจากคำเตือนที่อธิบายไว้ข้างต้น การเปลี่ยนแปลงยังได้รับการเสริมความแข็งแกร่งด้วย: OpenSSH จะยังคงละเว้น SSHFP ที่มี SHA‑1 ในอนาคต; เครื่องมือ ssh-keygen ออก SSHFP พร้อม SHA‑256 เฉพาะแล้ว ในทางปฏิบัติ การดำเนินการที่แนะนำคือ สร้างใหม่และเผยแพร่ลายนิ้วมือ SSHFP ใน SHA‑256 สำหรับโฮสต์ของคุณ

คำถามที่พบบ่อย: เหตุใดจึงต้องยืนกรานตอนนี้ หากคอมพิวเตอร์ควอนตัมยังไม่สามารถทำลาย SSH ได้? เพราะผู้โจมตีสามารถจับภาพวันนี้และถอดรหัสพรุ่งนี้ได้ การใช้ KEX หลังควอนตัมช่วยลดความเสี่ยงของเวกเตอร์นั้นได้ และหากคุณกังวลเกี่ยวกับความเยาว์วัยของอัลกอริทึม PQ โปรดจำไว้ว่า รูปแบบไฮบริด ยังคงรักษาระดับความปลอดภัยแบบคลาสสิกไว้เป็นฐาน

การปรับปรุงเครือข่าย: DSCP/IPQoS และการกำหนดลำดับความสำคัญของการรับส่งข้อมูล

การเปิดตัวครั้งนี้เป็นการยกระดับ QoS ครั้งใหญ่ ทั้งบนไคลเอนต์และเซิร์ฟเวอร์ การรับส่งข้อมูลแบบโต้ตอบค่าเริ่มต้นเป็นคลาส EF (การส่งต่อแบบเร่งด่วน)ซึ่งช่วยลดความหน่วงบน Wi-Fi และสื่อที่แออัด การรับส่งข้อมูลแบบไม่โต้ตอบจะเปลี่ยนไปใช้ เครื่องหมาย DSCP เริ่มต้นของระบบ, โดยไม่เพิ่มลำดับความสำคัญ

ในทางปฏิบัติทั้งสอง ssh(1) และ sshd(8) เปลี่ยนแปลงแบบไดนามิก ยี่ห้อที่ใช้ตามชนิดของช่องสัญญาณที่ปรากฏ: หากการเชื่อมต่อแบบเดียวกันรวมเชลล์และ sftp, เฟสการถ่ายโอนแบบไม่โต้ตอบ จะใช้ค่าที่ไม่โต้ตอบระหว่างการดำเนินการและกลับสู่ EF เมื่อเหมาะสม ซึ่งควบคุมโดยคีย์ IPQoS en ssh_config y sshd_config.

นอกจากนี้ การสนับสนุนสำหรับ ToS IPv4 รุ่นเก่ากำลังถูกถอนออก ในตัวเลือก IPQoS (lowdelay, throughput, reliability หยุดมีผล) หากคุณยังคงใช้มันอยู่ ย้ายไปยังระบบการตั้งชื่อ DSCP (เช่น., ef, cs0, af11ฯลฯ )

การปรับปรุงอินพุต: ผู้ใช้ URI และการขยาย

ในส่วนความปลอดภัย 10.1 แก้ไขกรณีที่ละเอียดอ่อนซึ่งหากคุณสร้างบรรทัดคำสั่งด้วยข้อมูลภายนอกและใช้ในเวลาเดียวกัน ProxyCommand พร้อมส่วนขยาย %r/%uผู้โจมตีสามารถแอบแทรกนิพจน์เชลล์เข้าไปได้ เพื่อลดปัญหานี้ ssh(1) ห้ามใช้อักขระควบคุมในผู้ใช้ที่ผ่าน CLI หรือขยายแล้วและยังบล็อกอักขระ null ใน URIs ด้วย ssh://.

หมายเหตุเกี่ยวกับความเข้ากันได้: จุดตรวจสอบได้รับการผ่อนปรนเพื่อหลีกเลี่ยงการทำลายกรณีที่ถูกต้องตามกฎหมาย ชื่อผู้ใช้ตามตัวอักษรที่กำหนดไว้ในไฟล์การกำหนดค่า (โดยไม่มีการขยาย %) จะได้รับการยกเว้น โดยยึดตามหลักการที่การกำหนดค่าในเครื่องนั้นถือว่าเชื่อถือได้

สัญญาณและข้อมูลสด: SIGINFO และการมองเห็น

เคล็ดลับการแก้จุดบกพร่องในทางปฏิบัติอีกประการหนึ่ง: ssh(1) และ sshd(8) ได้รับตัวจัดการ SIGINFO ที่บันทึกสถานะของช่องและเซสชันที่ใช้งานอยู่ ในการผลิตนี้ อำนวยความสะดวกในการวินิจฉัยการไหล การมัลติเพล็กซ์ การส่งต่อ และ X11 โดยไม่จำเป็นต้องแนบโปรแกรมดีบักเกอร์หรือเพิ่มรายละเอียดมากเกินไป

ในแนวทางเดียวกันของความโปร่งใส เมื่อการรับรองใบรับรองล้มเหลว ตอนนี้ sshd บันทึกข้อมูลเพียงพอเพื่อระบุใบรับรอง (รวมถึงสาเหตุที่ถูกปฏิเสธ) หากคุณทำงานกับ PKI และใบรับรองผู้ใช้/โฮสต์ การปรับปรุงนี้ ลดเวลาในการแก้ไขปัญหาลงอย่างมาก.

ssh-agent และคีย์: ซ็อกเก็ต การสุขาภิบาล และ PKCS#11

เพื่อป้องกันการเข้าถึงข้ามในสภาพแวดล้อมที่มีการติดตั้งแบบจำกัด /tmp, ซ็อกเก็ตตัวแทน (และที่ส่งต่อโดย sshd) เส ย้ายจาก /tmp ไปที่ ~/.ssh/agentดังนั้นกระบวนการที่มีสิทธิ์จำกัดบน /tmp จะไม่สืบทอดความสามารถในการลงนามด้วยคีย์ของคุณจากตัวแทนโดยไม่ได้ตั้งใจอีกต่อไป

การเปลี่ยนแปลงนี้มีอนุพันธ์อีกอย่างหนึ่ง: ก่อนที่ระบบปฏิบัติการจะสามารถทำความสะอาดซ็อกเก็ตที่ล้าสมัยได้ ตอนนี้ ssh‑agent รวมการล้างข้อมูลของตัวเอง จากซ็อกเก็ตเก่า นอกจากนี้ ตัวแทนยังเพิ่มแฟล็กใหม่ด้วย: -U y -u เพื่อควบคุมความสะอาดในช่วงเริ่มต้น -uu เพื่อละเว้นชื่อโฮสต์ในการล้างข้อมูลและ -T เพื่อบังคับให้มีสถานที่ทางประวัติศาสตร์ใน /tmp หากคุณต้องการมันจริงๆ

ในระนาบคีย์ ไคลเอนต์และตัวแทน ED25519 ที่โฮสต์บนโทเค็น PKCS#11 ได้รับการสนับสนุนแล้วหากคุณอาศัย HSM หรือคีย์เข้ารหัส คุณจะได้รับความยืดหยุ่นโดยไม่ต้องเสียสละความแข็งแกร่ง

ssh‑add และใบรับรอง: การหมดอายุการทำความสะอาดตัวเอง

เมื่อคุณเพิ่มใบรับรองให้กับตัวแทน ขณะนี้มีกำหนดวันหมดอายุไว้แล้ว โดยมีระยะเวลาผ่อนผัน 5 นาทีแนวคิดนี้เรียบง่าย: อนุญาตให้ธุรกรรมเสร็จสิ้นในคิวแล้ว ลบใบรับรองตัวแทนโดยอัตโนมัติหากการไหลของคุณต้องการการควบคุมทั้งหมด ssh‑add -N ปิดการใช้งานพฤติกรรมนี้

RefuseConnection: การตัดการเชื่อมต่อที่ควบคุมโดยฝั่งไคลเอนต์

มีสถานการณ์ที่คุณสนใจที่จะยกเลิกการเชื่อมต่อจากไคลเอนต์ด้วยข้อความที่ชัดเจน (ตัวอย่างเช่น การเปลี่ยนเส้นทางการดำเนินงานหรือการแจ้งเตือนการเลิกใช้งาน). OpenSSH 10.1 เพิ่ม การเชื่อมต่อขยะ a ssh_config: หากพบขณะประมวลผลส่วนที่ร้อน ไคลเอนต์จะยุติการทำงานด้วยข้อผิดพลาดและ แสดงข้อความที่คุณได้กำหนดไว้.

คุณภาพโค้ดและความปลอดภัยแบบสด

ทีมงานยังคงทำความสะอาดฐานโค้ดต่อไป 10.1 รายการ การรั่วไหลของหน่วยความจำได้รับการแก้ไขการปรับปรุงอะตอมเมื่อเขียน known_hosts มีผู้เข้าร่วมจำนวนมากและหลาย เงื่อนไขการแข่งขันได้รับการแก้ไขแล้ว ในกระบวนการเช่น MaxStartups หรือเซสชัน X11

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

ความสามารถในการพกพาและระบบนิเวศ: PAM, FreeBSD, macOS, Android…

การเปลี่ยนแปลงความสามารถในการพกพาส่งผลกระทบต่อหลายด้าน: การตรวจสอบพิเศษในสภาพแวดล้อม PAM (เช่น การทำให้แน่ใจว่าผู้ใช้จะไม่เปลี่ยนแปลงระหว่างกระบวนการ) การปรับปรุงการบูรณาการด้วย FreeBSD (การส่งต่อและความเข้ากันได้ของ tun) MacOS (การตรวจจับฟังก์ชันและส่วนหัวที่แข็งแกร่ง) และ Android (struct passwd พร้อมฟิลด์ที่ไม่ใช่ค่า null)

นอกจากนี้ส่วนหัวความเข้ากันได้ยังถูกเพิ่มสำหรับแพลตฟอร์มที่ไม่มีไลบรารีมาตรฐานบางอย่าง ซึ่งจะช่วยลดจำนวน #ifdef กระจายออกไป สุดท้ายก็ถูกกลั่นกรอง นโยบายแซนด์บ็อกซ์ Seccomp บน Linux เพื่อครอบคลุม syscalls เช่น futex_time64 ในรูปแบบ 32 บิต และเพิ่มการรองรับ AWS-LC เป็นทางเลือกแทน OpenSSL/LibreSSL

QoS ในการดำเนินการ: ตัวอย่างเชิงปฏิบัติและการย้าย IPQoS

หากคุณใช้ ToS aliases เก่า (lowdelay, throughput...), ตอนนี้พวกเขาจะถูกเพิกเฉย และคุณจะเห็นข้อความดีบักที่แนะนำ DSCP การย้ายข้อมูลทั่วไปจะเป็นไปจาก IPQoS lowdelay a IPQoS ef สำหรับเซสชันแบบโต้ตอบ หากคุณยังทำ SFTP หนักๆ ด้วย คุณก็ทำได้ กำหนดโปรไฟล์โดยการจับคู่ en ssh_config/sshd_config เพื่อแยกการจราจร

จำไว้ว่าเครื่องยนต์ เลือกและอัปเดตโดยอัตโนมัติ มันจะทำเครื่องหมายแบบเรียลไทม์ตามช่องที่เปิดอยู่ ดังนั้นงานส่วนใหญ่จึงได้รับการดำเนินการแทนคุณโดย OpenSSH แล้ว

การติดตั้ง OpenSSH 10.1 บน Linux (แหล่งที่มา)

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

tar -xvf opensh-10.1.tar.gz

เข้าสู่ไดเรกทอรีและ กำหนดค่าคำนำหน้าและเส้นทางการกำหนดค่า หากคุณต้องการ ตัวอย่างเช่น:

cd openssh-10.1 ./configure --prefix=/opt --sysconfdir=/etc/ssh

คอมไพล์และติดตั้ง ตามปกติ (ขึ้นอยู่กับการอนุญาต อาจมีผู้ใช้ระดับสูง):

ทำ

make install

เปิดใช้งาน OpenSSH บน Windows ด้วย PowerShell

ในสภาพแวดล้อม Windows สมัยใหม่ (Server 2019/Windows 10 1809+) คุณสามารถติดตั้งไคลเอนต์และเซิร์ฟเวอร์ OpenSSH เป็นฟีเจอร์ระบบได้. ตรวจสอบความจุและสถานะ :

Get-WindowsCapability-Online | ชื่อวัตถุที่เหมือนกับ 'OpenSSH*'

ติดตั้งส่วนประกอบ ตามที่คุณต้องการ:

เพิ่ม-WindowsCapability -Online -ชื่อ OpenSSH.Client~~~~0.0.1.0 เพิ่ม-WindowsCapability -Online -ชื่อ OpenSSH.Server~~~~0.0.1.0

เริ่มต้นและเปิดใช้งานบริการเซิร์ฟเวอร์ SSHและตรวจสอบกฎไฟร์วอลล์ขาเข้า:

เริ่มบริการ sshd ตั้งค่าบริการ - ชื่อ sshd - ประเภทการเริ่มต้น 'อัตโนมัติ' รับกฎ NetFirewall - ชื่อ 'OpenSSH-Server-In-TCP' - การดำเนินการข้อผิดพลาดแบบเงียบ ๆ ดำเนินการต่อ

หากต้องการเชื่อมต่อจากโฮสต์ Windows หรือ Linux อื่น ให้ใช้ไคลเอนต์มาตรฐาน: ssh dominio\usuario@servidor. เมื่อเข้าถึงครั้งแรก ยอมรับลายนิ้วมือโฮสต์ และยืนยันด้วยรหัสผ่านของคุณ

คู่มือการใช้งาน: การวินิจฉัยและแนวทางปฏิบัติที่ดี

สำหรับสภาพแวดล้อมที่มีใบรับรองผู้ใช้/โฮสต์ ใช้ประโยชน์จากการบันทึกข้อมูลที่ได้รับการปรับปรุง ของการปฏิเสธใน sshd เพื่อแก้ไข CA และส่วนขยาย หากเซสชันค้างหรือคุณสงสัยว่าเกิดการมัลติเพล็กซ์ เปิดตัว SIGINFO สู่กระบวนการแสดงรายการช่องที่ใช้งานอยู่โดยไม่ต้องเพิ่มระดับบันทึกทั่วโลก

หากคุณต้องพึ่งตัวแทน ให้ตรวจสอบว่าซ็อกเก็ตอยู่ที่ไหนตอนนี้ (~/.ssh/agent) และ เปิดใช้งานการทำความสะอาดอัตโนมัติ ในโมเดลการปรับใช้ของคุณ บนเวิร์กสเตชันแบบแชร์หรือ NFS ให้พิจารณาใช้แฟล็กเอเจนต์เพื่อตั้งค่าแฮชชื่อโฮสต์ในพาธเมื่อจำเป็น

การแก้ไขจุดบกพร่องที่เกี่ยวข้องมากที่สุด

ใน 10.1 พวกมันได้รับการแก้ไขแล้ว การถดถอยเล็กน้อยใน X11 เมื่อใช้ร่วมกับการบรรเทาอัตราการเต้นของหัวใจ (ObscureKeystrokeTiming) กรณีของ การบัญชีที่ย่ำแย่ของ MaxStartups ที่อาจจะท่วมช่องและการเขียนของ known_hosts ตอนนี้มันเสร็จแล้ว ในปฏิบัติการทางอะตอม เพื่อหลีกเลี่ยงการสลับสายที่มีการทำงานพร้อมกันสูง

ปรับปรุงการแก้ไขอื่น ๆ การวินิจฉัยเมื่อโหลดกุญแจการจัดการขีดจำกัดขนาดคอนฟิก (ตั้งแต่ 256KB ถึง 4MB) การตรวจสอบผลลัพธ์และกรณีพิเศษในลำดับการส่งต่อและควบคุมแบบโลคัล นอกจากนี้ ข้อความและผลลัพธ์จาก ssh -G y sshd -T.

รายการตรวจสอบการย้ายถิ่นฐานที่แนะนำ

รายการด่วนนี้ ซึ่งรวมถึงงานที่โครงการเสนอแนะและสิ่งที่เกิดขึ้นจากการเปลี่ยนแปลง:

  • Crypto: ตรวจสอบว่าของคุณ KexAlgorithms อนุญาตให้ใช้ PQ แบบไฮบริดและสร้าง SSHFP ใหม่ใน SHA‑256 ด้วย ssh-keygen -r.
  • QoS: เช็คเอาท์ IPQoS บนไคลเอนต์/เซิร์ฟเวอร์ ย้าย ToS เดิมไปยัง DSCP ใช้ประโยชน์จาก EF สำหรับเซสชันแบบโต้ตอบ
  • ตัวแทน: ปรับสคริปต์และตัวแปรให้เข้ากับซ็อกเก็ตภายใต้ ~/.ssh/agent; ค่าการทำความสะอาดอัตโนมัติโดยตัวเอเจนต์เอง
  • การกำหนดค่าขนาดใหญ่:หากคุณสร้างการกำหนดค่าจำนวนมาก ขีดจำกัดจะเพิ่มขึ้นเป็น 4MB ใช้ด้วยความฉลาด และควบคุมการตรวจสอบ
  • พาร์เซอร์: หลีกเลี่ยงการสร้างบรรทัดคำสั่งจากอินพุตที่ไม่น่าเชื่อถือ ใช้ config คนในพื้นที่ที่มีตัวอักษรเมื่อคุณมีกรณีแปลก ๆ ในชื่อผู้ใช้

ผู้ที่จัดการกองเรือผสมจะชื่นชมกับ 10.1 บีบคั้นความปลอดภัยในจุดที่เจ็บน้อยที่สุด (ตัววิเคราะห์ ตัวแทน คำเตือน) และในเวลาเดียวกัน ปรับปรุงประสบการณ์ในชีวิตประจำวัน (QoS แบบไดนามิก, SIGINFO, การบันทึกใบรับรอง) หากคุณใช้เวอร์ชัน 10.0 อยู่แล้ว การเปลี่ยนผ่านจะเป็นเรื่องง่าย หากคุณใช้เวอร์ชัน 9.x ให้ใช้เวลาในการปรับแต่ง DSCP สร้าง SSHFP ใหม่เป็น SHA‑256 และเปิดใช้งาน KEX แบบไฮบริดเพื่อป้องกันตัวเองจากภัยคุกคามควอนตัมโดยไม่กระทบต่อประสิทธิภาพ

openssh
บทความที่เกี่ยวข้อง:
OpenSSH 9.0 มาพร้อมกับ SFTP แทน scp, การปรับปรุง และอื่นๆ