Frequently Asked Question
วิธีการตั้งค่า SSH Certificate Authentication ระหว่าง Linux (Client) และ Linux (Server)
ปรับปรุงล่าสุด 6 วันมาแล้ว
สรุปขั้นตอนการตั้งค่า SSH Certificate Authentication ระหว่าง Linux (Client) และ Linux (Server) แบบเข้าใจง่าย
สิ่งที่ต้องจำ (แนวคิด Passport):
- Client (เครื่องต้นทาง): เก็บ CA Private Key (ca_key), User Key (id_ed25519) และ ใบรับรอง/Passport (id_ed25519-cert.pub)
- Server (เครื่องปลายทาง): เก็บเฉพาะ CA Public Key (ca_key.pub) ไว้ตรวจตราว่า Certificate ของ Client ถูกต้องหรือไม่
ขั้นตอนที่ 1: ทำบนเครื่อง Client (เครื่องต้นทาง)
- สร้าง CA Key Pair (กุญแจแม่เพื่อใช้เซ็นอนุมัติ):
ssh-keygen -t ed25519 -f ~/.ssh/ca_key -C "My Master CA"
(จะได้ไฟล์ca_keyและca_key.pub) - สร้าง User Key Pair (หากยังไม่มี):
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519 - เซ็นสร้าง Certificate (Passport) ให้ User Key:
ssh-keygen -s ~/.ssh/ca_key -I client_user -n root,ubuntu -V +52w ~/.ssh/id_ed25519.pub
(-n: ใส่ Username ฝั่ง Server ที่อนุญาตให้ล็อกอินเข้าได้ เช่น root หรือ ubuntu)
(จะได้ไฟล์id_ed25519-cert.pubเพิ่มขึ้นมา) - เปิดดู CA Public Key เพื่อนำไปใส่ใน Server:
cat ~/.ssh/ca_key.pub
(คัดลอกข้อความยาวๆ ที่ขึ้นต้นด้วยssh-ed25519 AAAAC3...ไว้)
ขั้นตอนที่ 2: ทำบนเครื่อง Server (เครื่องปลายทาง)
- สร้างไฟล์เก็บ CA Public Key:
sudo nano /etc/ssh/ca_key.pub
วางข้อความca_key.pubที่ก๊อปมาจากเครื่อง Client ลงไป แล้วเซฟไฟล์ จากนั้นตั้งค่าสิทธิ์:
sudo chmod 644 /etc/ssh/ca_key.pub - ตรวจสอบ Fingerprint:
ssh-keygen -lf /etc/ssh/ca_key.pub
(ค่า SHA256 ต้องตรงกับคำสั่งบนเครื่อง Client) - ตั้งค่า SSH ให้เชื่อถือ CA: เปิดไฟล์คอนฟิก SSH:
sudo nano /etc/ssh/sshd_config
เพิ่มบรรทัดนี้ไว้ด้านล่างสุด:
TrustedUserCAKeys /etc/ssh/ca_key.pub
(หากต้องการล็อกอินด้วย root ให้เช็คบรรทัด PermitRootLogin ด้วยว่าตั้งเป็น prohibit-password หรือ yes) - ตรวจสอบความถูกต้องและสั่ง Restart SSH Service:
sudo sshd -t
sudo systemctl restart ssh(หรือsshdตามระบบปฏิบัติการ)
ขั้นตอนที่ 3: ทดสอบเชื่อมต่อ (ทำจากเครื่อง Client)
รันคำสั่ง SSH ไปยัง Server ตามปกติ:
ssh root@
OpenSSH บนเครื่อง Client จะส่งไฟล์ id_ed25519-cert.pub ไปให้ Server ตรวจสอบโดยอัตโนมัติ และจะสามารถเข้าใช้งานได้ทันทีโดยไม่ต้องใส่รหัสผ่าน