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 (เครื่องต้นทาง)

  1. สร้าง CA Key Pair (กุญแจแม่เพื่อใช้เซ็นอนุมัติ):
    ssh-keygen -t ed25519 -f ~/.ssh/ca_key -C "My Master CA"
    (จะได้ไฟล์ ca_key และ ca_key.pub)
  2. สร้าง User Key Pair (หากยังไม่มี):
    ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519
  3. เซ็นสร้าง 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 เพิ่มขึ้นมา)
  4. เปิดดู CA Public Key เพื่อนำไปใส่ใน Server:
    cat ~/.ssh/ca_key.pub
    (คัดลอกข้อความยาวๆ ที่ขึ้นต้นด้วย ssh-ed25519 AAAAC3... ไว้)

ขั้นตอนที่ 2: ทำบนเครื่อง Server (เครื่องปลายทาง)

  1. สร้างไฟล์เก็บ CA Public Key:
    sudo nano /etc/ssh/ca_key.pub
    วางข้อความ ca_key.pub ที่ก๊อปมาจากเครื่อง Client ลงไป แล้วเซฟไฟล์ จากนั้นตั้งค่าสิทธิ์:
    sudo chmod 644 /etc/ssh/ca_key.pub
  2. ตรวจสอบ Fingerprint:
    ssh-keygen -lf /etc/ssh/ca_key.pub
    (ค่า SHA256 ต้องตรงกับคำสั่งบนเครื่อง Client)
  3. ตั้งค่า SSH ให้เชื่อถือ CA: เปิดไฟล์คอนฟิก SSH:
    sudo nano /etc/ssh/sshd_config
    เพิ่มบรรทัดนี้ไว้ด้านล่างสุด:
    TrustedUserCAKeys /etc/ssh/ca_key.pub
    (หากต้องการล็อกอินด้วย root ให้เช็คบรรทัด PermitRootLogin ด้วยว่าตั้งเป็น prohibit-password หรือ yes)
  4. ตรวจสอบความถูกต้องและสั่ง Restart SSH Service:
    sudo sshd -t
    sudo systemctl restart ssh (หรือ sshd ตามระบบปฏิบัติการ)

ขั้นตอนที่ 3: ทดสอบเชื่อมต่อ (ทำจากเครื่อง Client)

รันคำสั่ง SSH ไปยัง Server ตามปกติ:
ssh root@
OpenSSH บนเครื่อง Client จะส่งไฟล์ id_ed25519-cert.pub ไปให้ Server ตรวจสอบโดยอัตโนมัติ และจะสามารถเข้าใช้งานได้ทันทีโดยไม่ต้องใส่รหัสผ่าน

กรุณารอสักครู่!

กรุณารอสักครู่