
ที่มาภาพ: Unknown Source
วิธีตั้งค่าและใช้งานการยืนยันตัวตนแบบ SSH Certificate บน Linux อย่างปลอดภัย
⚡ สรุป 30 วิ
การใช้ **SSH Certificate** ช่วยลดความซับซ้อนของการจัดการคีย์และเพิ่มระดับความปลอดภัยบน Linux ระบบหลายเครื่องได้อย่างมีประสิทธิภาพ บทความนี้จะอธิบายหลักการทำงาน ขั้นตอนตั้งค่า และวิธีตรวจสอบให้ระบบทำงา…
ภาพรวม
Overview
การใช้ SSH Certificate ช่วยลดความซับซ้อนของการจัดการคีย์และเพิ่มระดับความปลอดภัยบน Linux ระบบหลายเครื่องได้อย่างมีประสิทธิภาพ บทความนี้จะอธิบายหลักการทำงาน ขั้นตอนตั้งค่า และวิธีตรวจสอบให้ระบบทำงานแบบ ปลอดภัย
- ทำให้การหมุนเวียนคีย์เป็นอัตโนมัติ
- ลดความเสี่ยงจากคีย์ที่ล้าสมัยหรือถูกขโมย
- สามารถกำหนดนโยบายหมดอายุและสิทธิ์ได้ละเอียด
**Tip: ควรสร้าง CA (Certificate Authority) บนเซิร์ฟเวอร์ที่เข้าถึงได้จำกัด และเก็บส่วนตัวของคีย์ไว้ใน HSM หรือเครื่องที่ปลอดภัย
ความแตกต่างระหว่าง SSH Key กับ SSH Certificate
Key vs Certificate
การเปรียบเทียบคุณสมบัติหลักของ SSH Key แบบดั้งเดิมกับ SSH Certificate ช่วยให้เห็นข้อได้เปรียบอย่างชัดเจน
| คุณลักษณะ | SSH Key (แบบดั้งเดิม) | SSH Certificate |
|---|---|---|
| การจัดการคีย์ | ต้องหมุนเวียนและแจกจ่ายใหม่ทุกครั้ง | CA จัดการออกใบรับรอง มีอายุใช้งานกำหนด |
| ความยืดหยุ่น | จำกัดสิทธิ์ตามไฟล์ authorized_keys | สามารถใส่ข้อจำกัดหลายระดับ (principals, expirations) |
| การตรวจสอบ | เพียงคีย์เดียว | ตรวจสอบลายเซ็นของ CA ก่อนอนุญาต |
| ความปลอดภัย | คีย์อาจถูกคัดลอกและใช้ต่อเนื่องได้ | ใบรับรองหมดอายุอัตโนมัติ ลดผลกระทบจากการรั่วไหล |
เตรียมสภาพแวดล้อม
Prerequisites
ก่อนเริ่มสร้าง SSH Certificate ต้องตรวจสอบว่าระบบมีเครื่องมือที่จำเป็นและตั้งค่าพื้นฐานเรียบร้อย
- ระบบปฏิบัติการ: Linux (Ubuntu, CentOS, Debian) เวอร์ชันล่าสุด
- ติดตั้ง `openssh-server` และ `openssl` หรือ `ssh-keygen` รุ่น 7.2 ขึ้นไป
- มีบัญชีผู้ใช้ที่มีสิทธิ์ root หรือ sudo
**Tip: ควรทำการอัพเดตแพคเกจทั้งหมดก่อน (`apt update && apt upgrade` หรือ `yum update`) เพื่อป้องกันช่องโหว่ที่อาจเกิดขึ้น
สร้าง Certificate Authority (CA)
Create CA
CA คือศูนย์กลางในการออกและตรวจสอบใบรับรอง คีย์ส่วนตัวของ CA ต้องเก็บอย่างปลอดภัย
- **ขั้นตอนที่ 1: สร้างคีย์ส่วนตัวของ CA
```bash ssh-keygen -t ed25519 -f /etc/ssh/ca_key -N -C "My SSH CA" ```
- **ขั้นตอนที่ 2: ดึง public key ของ CA เพื่อใช้ในการตั้งค่าเซิร์ฟเวอร์
```bash cat /etc/ssh/ca_key.pub >> /etc/ssh/sshd_config.d/ca.conf ```
- **ขั้นตอนที่ 3: เพิ่มบรรทัดใน `sshd_config` เพื่อตรวจสอบใบรับรองจาก CA
```text TrustedUserCAKeys /etc/ssh/ca_key.pub ```
- **ขั้นตอนที่ 4: รีสตาร์ท SSH daemon เพื่อให้การตั้งค่าใหม่ทำงาน
```bash systemctl restart sshd ```
ออกใบรับรองให้ผู้ใช้หรือโฮสต์
Issue Certificates
เมื่อ CA พร้อมแล้ว สามารถออกใบรับรองสำหรับผู้ใช้หรือเครื่องได้ตามขั้นตอนต่อไป
- **ขั้นตอนที่ 1: สร้างคีย์ SSH ปกติของผู้ใช้ (ถ้ายังไม่มี)
```bash ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519_user -N ```
- **ขั้นตอนที่ 2: ใช้ `ssh-keygen` เพื่อสร้างใบรับรองจากคีย์นั้น
```bash ssh-keygen -s /etc/ssh/ca_key \ -I [email protected] \ -n user01 \ -V +52w \ ~/.ssh/id_ed25519_user.pub ```
- `-I` ระบุ identity string ที่แสดงในบันทึก
- `-n` ระบุ principal (ชื่อผู้ใช้หรือโฮสต์)
- `-V` กำหนดช่วงเวลาใช้งาน (`+52w` = หนึ่งปี)
- **ขั้นตอนที่ 3: คัดลอกไฟล์ `.cert.pub` ไปยังเครื่องปลายทางและเพิ่มใน `authorized_keys` ของผู้ใช้
```bash cat ~/.ssh/id_ed25519_user-cert.pub >> ~/.ssh/authorized_keys ```
ตั้งค่าเซิร์ฟเวอร์ให้ยอมรับ Certificate
Server Configuration
เพื่อให้ SSH Daemon ตรวจสอบใบรับรองจาก CA ต้องทำการตั้งค่าที่สำคัญสองส่วน
- เปิดใช้งาน TrustedUserCAKeys (ดูในหัวข้อสร้าง CA)
- หากต้องการบังคับใช้เฉพาะ certificate สามารถเพิ่ม `AuthenticationMethods publickey,keyboard-interactive:pam` เพื่อให้ผู้ใช้ต้องส่งใบรับรองที่ลงนามโดย CA
```text TrustedUserCAKeys /etc/ssh/ca_key.pub PubkeyAcceptedAlgorithms [email protected],[email protected] ```
หลังจากแก้ไขให้รีสตาร์ท daemon อีกครั้ง
```bash systemctl reload sshd ```
การตรวจสอบและบำรุงรักษา
Maintenance
การดูแล CA และใบรับรองเป็นส่วนสำคัญของระบบปลอดภัย
- ตรวจสอบ log ของ SSH เพื่อหาการพยายามใช้ใบรับรองที่หมดอายุหรือไม่ถูกต้อง
```bash journalctl -u sshd | grep "Certificate" ```
- ใช้สคริปต์เพื่อหมุนเวียนใบรับรองก่อนวันหมดอายุ (`ssh-keygen -L -f <cert>` ดูวันหมดอายุ)
- เก็บ revocation list หากต้องการเพิกถอนใบรับรองแบบเฉพาะเจาะจง (OpenSSH ยังไม่มี CRL อย่างเต็มรูปแบบ จึงแนะนำให้ลบ `authorized_keys` ของผู้ใช้ที่ต้องการยกเลิก)
**Tip: ตั้งค่า cron job ที่ตรวจสอบวันหมดอายุทุกสัปดาห์และส่งแจ้งเตือนไปยังทีมดูแลระบบ
เคล็ดลับความปลอดภัยเพิ่มเติม
Security Tips
- ใช้ ED25519 หรือ RSA 4096-bit เป็นคีย์หลักของ CA เพื่อลดโอกาสถูกถอดรหัส
- ป้องกันการเข้าถึงไฟล์ `ca_key` ด้วยสิทธิ์ `600` และเจ้าของเป็น root เท่านั้น
- แยก CA สำหรับ ผู้ใช้ กับ เครื่องโฮสต์ เพื่อจำกัดผลกระทบหากคีย์ส่วนใดถูกขโมย
สรุป
Summary
การใช้งาน SSH Certificate บน Linux ช่วยให้ระบบจัดการอัตโนมัติและปลอดภัยมากขึ้น หากทำตามขั้นตอนต่อไปนี้จะได้ผลลัพธ์ที่ดี
- สร้าง CA ด้วยคีย์ที่แข็งแรงและเก็บอย่างปลอดภัย
- ออกใบรับรองโดยกำหนด principal, ระยะเวลาใช้งาน และ identity string
- ตั้งค่า `sshd_config` ให้ยอมรับใบรับรองจาก CA
- ตรวจสอบ log อย่างสม่ำเสมอและหมุนเวียนใบรับรองก่อนหมดอายุ
- แบ่งแยก CA สำหรับผู้ใช้และโฮสต์เพื่อจำกัดขอบเขตการละเมิด
การนำ SSH Certificate มาใช้อย่างเป็นระบบจะทำให้ทีมไอทีสามารถควบคุมสิทธิ์การเข้าถึงได้ละเอียด ลดภาระในการจัดการคีย์แบบเดิม และเพิ่มระดับความปลอดภัยของโครงสร้างพื้นฐานอย่างต่อเนื่อง.
แชร์บทความนี้:
ชอบบทความแบบนี้?
สมัคร AI Automate Weekly Newsletter — รับเคล็ดลับ AI + how-to ใหม่
ทุกสัปดาห์ตรงถึง inbox ฟรี ไม่มีสแปม
แหล่งข่าวต้นฉบับ
- ชื่อต้นฉบับ
- วิธีตั้งค่าและใช้งานการยืนยันตัวตนแบบ SSH Certificate บน Linux อย่างปลอดภัย
- ผู้เขียน
- กองบรรณาธิการ Thai Tech News
- แหล่ง
- บทความต้นฉบับ Thai Tech News · ช่วยร่างด้วย AI, เรียบเรียง/ตรวจสอบโดยกองบรรณาธิการ
- วันที่เผยแพร่
- 25 กรกฎาคม 2569 เวลา 10:50



