
ที่มาภาพ: Unknown Source
วิธีตั้งค่า Zero Trust SSH เข้าถึงระยะไกลด้วย OpenSSH Certificate Authority บน Linux อย่างปลอดภัย
⚡ สรุป 30 วิ
Zero Trust SSH เป็นแนวคิดที่ไม่ให้ความเชื่อใด ๆ โดยอัตโนมัติ การยืนยันตัวตนต้องอาศัยใบรับรอง (certificate) ที่ออกโดย CA เท่านั้น บน Linux เราสามารถใช้ OpenSSH Certificate Authority (CA) สร้างระบบนี้ได…
ภาพรวม — Overview
Zero Trust SSH เป็นแนวคิดที่ไม่ให้ความเชื่อใด ๆ โดยอัตโนมัติ การยืนยันตัวตนต้องอาศัยใบรับรอง (certificate) ที่ออกโดย CA เท่านั้น บน Linux เราสามารถใช้ OpenSSH Certificate Authority (CA) สร้างระบบนี้ได้อย่างง่ายและปลอดภัย
- Zero Trust หมายถึง “ไม่เชื่อใครจนกว่าจะพิสูจน์”
- OpenSSH CA ให้การจัดการคีย์แบบศูนย์กลาง ลดความซับซ้อนของ SSH keys ปกติ
- ระบบนี้เหมาะกับองค์กรที่ต้องควบคุมการเข้าถึงเซิร์ฟเวอร์หลายเครื่อง
**Tip: เริ่มต้นด้วยระบบทดสอบก่อนนำไปใช้ใน production เพื่อหลีกเลี่ยงการตัดการเชื่อมต่อโดยไม่ตั้งใจ
สิ่งจำเป็นล่วงหน้า — Prerequisites
เพื่อทำตามขั้นตอนนี้ คุณต้องมีเครื่อง Linux ที่ติดตั้ง OpenSSH เวอร์ชัน 7.2 ขึ้นไป และสิทธิ์ `root` หรือ `sudo` บนเซิร์ฟเวอร์ที่ทำหน้าที่เป็น CA
- ระบบปฏิบัติการ: Ubuntu 20.04+, CentOS 8+, Debian 10+ ฯลฯ
- OpenSSH รุ่นล่าสุด (`ssh -V`)
- พื้นฐานการใช้งาน Linux shell และไฟล์ระบบ
สร้างคู่คีย์ของ CA — Create CA Key Pair
CA ต้องมีคีย์ส่วนตัวหนึ่งคู่เพื่อออกใบรับรอง เราจะเก็บคีย์นี้ในตำแหน่งที่ปลอดภัยและจำกัดสิทธิ์การเข้าถึง
- **ขั้นตอนที่ 1: สร้างคีย์ RSA 4096 บิต
``` sudo ssh-keygen -t rsa -b 4096 -f /etc/ssh/ca_key -N ```
- **ขั้นตอนที่ 2: ตั้งสิทธิ์ให้เฉพาะ root สามารถอ่านได้ (`chmod 600`)
**Tip: อย่าเก็บคีย์ CA ไว้ในโฟลเดอร์ผู้ใช้ทั่วไป เพื่อป้องกันการขโมย
สร้างใบรับรองสำหรับเซิร์ฟเวอร์ (Host Certificate) — Issue Host Certificates
แต่ละเครื่องที่ต้องให้บริการ SSH จะต้องมีใบรับรองจาก CA แทนคีย์ host ธรรมดา
- **ขั้นตอนที่ 1: บนเครื่อง server ให้สร้างคีย์ host ปกติ
``` sudo ssh-keygen -t rsa -b 4096 -f /etc/ssh/ssh_host_rsa_key -N ```
- **ขั้นตอนที่ 2: ใช้คีย์ CA sign ใบรับรอง host
``` sudo ssh-keygen -s /etc/ssh/ca_key \ -I $(hostname)-host \ -h -n $(hostname) \ -V +52w \ -z 1 \ /etc/ssh/ssh_host_rsa_key.pub ```
**Tip: ตัวเลือก `-V +52w` กำหนดอายุใบรับรองเป็น 52 สัปดาห์ ปรับตามนโยบายขององค์กร
สร้างใบรับรองสำหรับผู้ใช้ (User Certificate) — Issue User Certificates
ผู้ใช้ต้องมีคีย์ส่วนตัวและใบรับรองที่ CA ลงนามเพื่อให้เข้าสู่ระบบได้
- **ขั้นตอนที่ 1: ผู้ใช้สร้างคีย์ส่วนตัวบนเครื่องของตนเอง
``` ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519 -N ```
- **ขั้นตอนที่ 2: ผู้ดูแล CA sign คีย์ผู้ใช้และกำหนดสิทธิ์ (principals)
``` sudo ssh-keygen -s /etc/ssh/ca_key \ -I user1-cert \ -n user1 \ -V +30d \ -z 1 \ ~/.ssh/id_ed25519.pub ```
**Tip: สามารถใส่หลาย `-n` เพื่อให้ใบรับรองใช้ได้กับหลายผู้ใช้ในครั้งเดียว
ตั้งค่า SSH Daemon ให้ยอมรับ CA — Configure sshd
เซิร์ฟเวอร์ต้องรู้ตำแหน่งไฟล์ CA public key และบังคับให้ใช้ certificate เท่านั้น
- แก้ไข `/etc/ssh/sshd_config` เพิ่มบรรทัดต่อไปนี้
``` TrustedUserCAKeys /etc/ssh/ca_key.pub HostCertificate /etc/ssh/ssh_host_rsa_key-cert.pub PasswordAuthentication no PubkeyAuthentication yes ```
- รีสตาร์ทบริการ SSH
``` sudo systemctl restart sshd ```
**Tip: ตรวจสอบไฟล์ config ด้วย `sshd -t` ก่อนรีสตาร์ทเพื่อหลีกเลี่ยง syntax error
ตั้งค่า client ให้ใช้ certificate — Configure SSH Client
ผู้ใช้ต้องบอก SSH ว่าให้ใช้คีย์ส่วนตัวและใบรับรองที่สร้าง
- แก้ไขหรือสร้างไฟล์ `~/.ssh/config`
``` Host *.example.com IdentityFile ~/.ssh/id_ed25519 CertificateFile ~/.ssh/id_ed25519-cert.pub IdentitiesOnly yes ```
- ตรวจสอบการเชื่อมต่อด้วยคำสั่ง
``` ssh -vv [email protected] ```
**Tip: หากเห็น `Authentication succeeded (publickey)` แสดงว่า certificate ทำงานเรียบร้อย
เปรียบเทียบการยืนยันแบบ Password vs Certificate — Comparison Table
| คุณลักษณะ | การใช้ Password | การใช้ SSH Certificate |
|---|---|---|
| ความปลอดภัย | เสี่ยงต่อ brute‑force, phishing | คีย์และ CA ทำให้โจมตีได้ยากกว่า |
| การจัดการ | ต้องบังคับเปลี่ยน password ทุกคน | เพียงอัปเดตหรือ revoke ใบรับรอง |
| ประสิทธิภาพ | ต้องตรวจสอบรหัสผ่านทุกครั้ง | ตรวจสอบลายเซ็นหนึ่งครั้งต่อ session |
| ความสะดวก | ผู้ใช้จำ/พิมพ์หลายรอบ | ใช้คีย์เดียวกับ certificate |
การทดสอบและการบำรุงรักษา — Testing & Maintenance
หลังตั้งค่าเสร็จ ควรทำการตรวจสอบอย่างละเอียดเพื่อให้แน่ใจว่าไม่มีช่องโหว่
- ทดสอบจากเครื่อง client ที่ไม่ได้รับใบรับรอง จะต้องเชื่อมต่อไม่สำเร็จ
- ตรวจสอบ log ของ sshd (`/var/log/auth.log` หรือ `journalctl -u sshd`) เพื่อหา error ใด ๆ
- ตั้ง cron job เพื่อตรวจสอบวันหมดอายุของ certificate และแจ้งเตือนล่วงหน้า
**Tip: ใช้คำสั่ง `ssh-keygen -L -f /etc/ssh/ca_key.pub` ตรวจดูรายละเอียดใบรับรองทั้งหมด
สรุป — Summary
Zero Trust SSH ด้วย OpenSSH CA ช่วยให้การเข้าถึงระยะไกลบน Linux มีความปลอดภัยและจัดการง่ายขึ้น
- สร้างคีย์ CA และกำหนดสิทธิ์เข้าถึงอย่างเคร่งครัด
- ออกใบรับรอง host & user จาก CA พร้อมตั้งค่าอายุที่เหมาะสม
- ปรับ `sshd_config` ให้ยอมรับเฉพาะ certificate เท่านั้น
- ตั้งค่า client ใช้คีย์ + certificate เพื่อเชื่อมต่อโดยไม่มี password
**สิ่งที่ควรจำ: การรักษาความปลอดภัยของคีย์ CA เป็นหัวใจหลัก; หากคีย์นี้ถูกขโมย ระบบ Zero Trust ทั้งหมดอาจพังลงได้. จัดเก็บในฮาร์ดแวร์ security module (HSM) หรือเครื่องแยกที่เข้าถึงไม่ได้จากผู้ใช้ทั่วไป.
แชร์บทความนี้:
ชอบบทความแบบนี้?
สมัคร AI Automate Weekly Newsletter — รับเคล็ดลับ AI + how-to ใหม่
ทุกสัปดาห์ตรงถึง inbox ฟรี ไม่มีสแปม
แหล่งข่าวต้นฉบับ
- ชื่อต้นฉบับ
- วิธีตั้งค่า Zero Trust SSH เข้าถึงระยะไกลด้วย OpenSSH Certificate Authority บน Linux อย่างปลอดภัย
- ผู้เขียน
- กองบรรณาธิการ Thai Tech News
- แหล่ง
- บทความต้นฉบับ Thai Tech News · ช่วยร่างด้วย AI, เรียบเรียง/ตรวจสอบโดยกองบรรณาธิการ
- วันที่เผยแพร่
- 26 สิงหาคม 2569 เวลา 10:50



