# OpenSSH 10.6 สำหรับคีย์ SSH แบบหลังควอนตัม CH-J Tools สามารถเพิ่มคีย์ประเภท `ssh-mldsa44-ed25519` ซึ่งเป็นคีย์แบบหลังควอนตัมลงในเซิร์ฟเวอร์ได้ก็ต่อเมื่อเซิร์ฟเวอร์นั้นใช้ **OpenSSH 10.6 หรือใหม่กว่า** โดย OpenSSH 10.6 (6 ตุลาคม ค.ศ. 2026) เป็นรุ่นแรกที่รองรับรูปแบบมาตรฐานของคีย์ประเภทนี้ รุ่นเก่าจะปฏิเสธคีย์ดังกล่าว บางรุ่น เช่น 10.2p1 ใน Ubuntu 26.04 รองรับเพียงรูปแบบทดลอง `…@openssh.com` ซึ่ง CH-J Tools ไม่ได้ใช้ ณ เวลาที่เขียนคู่มือนี้ Ubuntu และ Debian ยังไม่มีรุ่น 10.6 ให้ติดตั้งผ่าน `apt` คู่มือนี้จะติดตั้ง **OpenSSH 10.6p2** รุ่นทางการ (5 พฤศจิกายน ค.ศ. 2026 แก้ไขช่องโหว่การข้ามการยืนยันตัวตนด้วยรหัสผ่านในบิลด์สำหรับ Linux ที่ไม่มี PAM) ควบคู่ไปกับแพ็กเกจของดิสทริบิวชัน และกำหนดให้บริการ `ssh` ใช้รุ่นที่ติดตั้งนี้ ทดสอบบน Ubuntu 26.04.1 LTS ที่ติดตั้งใหม่แล้ว ทั้งการติดตั้ง การเข้าสู่ระบบด้วยคีย์ `ssh-mldsa44-ed25519` การรีบูต และการย้อนกลับ ## ก่อนเริ่มต้น - **คุณต้องดูแลบิลด์นี้ด้วยตนเอง** `apt upgrade` จะไม่ติดตั้งแพตช์ความปลอดภัยให้บิลด์นี้ โปรดติดตาม[บันทึกประจำรุ่นของ OpenSSH](https://www.openssh.com/releasenotes.html) และทำตามขั้นตอนนี้อีกครั้งโดยใช้รุ่นที่ใหม่กว่า หรือย้อนกลับไปใช้รุ่นเดิม - เปิด**เซสชัน SSH ที่สองค้างไว้**ตลอดขั้นตอน หากมีช่องทางเข้าถึงคอนโซลด้วยจะดียิ่งขึ้น (ไฮเปอร์ไวเซอร์, IPMI, คอนโซลคลาวด์) - ทดลองบนเครื่องทดสอบก่อน - คุณต้องมีสิทธิ์ root, systemd, พื้นที่ว่างประมาณ 1 GiB ใน `/var/tmp` และการเชื่อมต่ออินเทอร์เน็ตสำหรับ `apt` และการดาวน์โหลด OpenSSH ## สิ่งที่สคริปต์ทำ 1. ติดตั้งแพ็กเกจที่จำเป็นสำหรับการคอมไพล์ด้วย `apt` 2. ดาวน์โหลด `openssh-10.6p2.tar.gz` แล้วตรวจสอบค่า SHA-256 ที่กำหนดไว้ตายตัวและลายเซ็น OpenPGP จากคีย์เผยแพร่รุ่นของ OpenSSH `7168 B983 815A 5EEF 59A4 ADFD 2A3F 414E 7360 60BA` 3. คอมไพล์และติดตั้งลงใน `/opt/openssh-10.6p2` โดยการกำหนดค่าของคุณใน `/etc/ssh` (คีย์โฮสต์, `sshd_config`) และการกำหนดค่า PAM จะไม่เปลี่ยนแปลง 4. ตรวจสอบ `sshd_config` ปัจจุบันด้วยรุ่นใหม่ จากนั้นเริ่มอินสแตนซ์ทดสอบที่ `127.0.0.1:2226` และจะไม่สลับไปใช้รุ่นใหม่จนกว่าการตรวจสอบทั้งสองรายการจะผ่าน 5. เพิ่มไฟล์การกำหนดค่าเสริมของ systemd ที่ `/etc/systemd/system/ssh.service.d/chj-openssh.conf` และปิดใช้งาน `ssh.socket` เนื่องจาก sshd จากโครงการต้นทางไม่รองรับการเริ่มทำงานผ่านซ็อกเก็ต จากนั้นเริ่ม `ssh.service` ใหม่ 6. ตรวจสอบว่าโปรเซสที่กำลังทำงานคือ `/opt/openssh-10.6p2/sbin/sshd` และแบนเนอร์ระบุว่า `SSH-2.0-OpenSSH_10.6` หากการตรวจสอบรายการใดไม่ผ่าน สคริปต์จะย้อนกลับให้โดยอัตโนมัติ ## การติดตั้ง ```bash curl -fsSLO https://tools.ch-j.de/files/tools/chj-openssh-10.6.sh echo "cdf3031a0b64db3e3bf3c83d31bd746aee5505757b1af5e137750326ed8d7a01 chj-openssh-10.6.sh" | sha256sum -c - less chj-openssh-10.6.sh # read it before running it as root sudo bash chj-openssh-10.6.sh install ``` จากนั้นเปิดการเชื่อมต่อ SSH **ใหม่** ปิดเซสชันเดิมหลังจากเข้าสู่ระบบผ่านการเชื่อมต่อใหม่ได้แล้วเท่านั้น ## การตรวจสอบและย้อนกลับ ```bash sudo bash chj-openssh-10.6.sh status # running binary, ssh.socket, banner sudo bash chj-openssh-10.6.sh rollback # back to the distribution sshd ``` การย้อนกลับจะลบไฟล์การกำหนดค่าเสริม เปิดใช้งาน `ssh.socket` อีกครั้งหากเคยเปิดใช้งานไว้ และเริ่ม `sshd` ของดิสทริบิวชันใหม่ บิลด์ใน `/opt/openssh-10.6p2` จะยังคงอยู่บนดิสก์จนกว่าคุณจะลบออก หลังจากย้อนกลับแล้ว คีย์ `ssh-mldsa44-ed25519` จะใช้กับเซิร์ฟเวอร์นั้นไม่ได้อีก ## จากนั้นใน CH-J Tools เชื่อมต่อกับเซิร์ฟเวอร์อีกครั้ง ใน **Users** คุณจะสามารถเพิ่มคีย์ `ssh-mldsa44-ed25519` จาก Keychain ได้แล้ว หากเซิร์ฟเวอร์ยังคงรายงานว่าเป็นรุ่นเก่า CH-J Tools จะแสดงข้อความ "OpenSSH 10.6 or newer is required" และจะไม่เพิ่มคีย์