การ “ปิดการ login ด้วย password” แล้วเปลี่ยนไปใช้ SSH Key Authentication เป็นแนวทางมาตรฐานที่ SysAdmin ใช้เพื่อเพิ่มความปลอดภัยของระบบ โดยเฉพาะบน Ubuntu Server หรือ Linux Server อื่น ๆ
แนวคิดคือ
– ตัดความเสี่ยงจาก brute-force / password guessing
– ให้ login ได้เฉพาะเครื่องที่มี private key เท่านั้น
หลักการทำงาน (เข้าใจง่าย)
- Password = สิ่งที่ “เดาได้”
- SSH Key = สิ่งที่ “ต้องมีไฟล์จริง + เข้ารหัส”
ระบบจะใช้คู่กุญแจ:
- Public Key → เก็บบน Server
- Private Key → อยู่ที่เครื่องเรา (ห้ามหลุด!)
สิ่งที่ต้องมี (Prerequisites)
- Ubuntu Server 22.04 / 24.04 / 25.10
- User ที่มีสิทธิ์
sudo - เครื่อง Client (Linux / macOS / Windows + PowerShell)
Step-by-Step: ปิด Password Login
1) สร้าง SSH Key (ที่เครื่อง Client)
ssh-keygen -t ed25519 -C “your_email@example.com”
แนะนำใช้
ed25519 เพราะปลอดภัยและเร็วกว่า RSA2) Copy Public Key ไปที่ Server
ssh-copy-id username@your-server-ip
หรือ manual
cat ~/.ssh/id_ed25519.pub | ssh username@server “mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys”
3) ทดสอบ Login แบบ Key
ssh username@your-server-ip
ต้องเข้าได้ “โดยไม่ถาม password” (หรือถาม passphrase ของ key แทน)
4) ปิด Password Authentication
แก้ไขไฟล์ config
sudo nano /etc/ssh/sshd_config
แก้ค่า
PasswordAuthentication no
ChallengeResponseAuthentication no
UsePAM no
ChallengeResponseAuthentication no
UsePAM no
สำคัญมาก: ห้ามปิดก่อนทดสอบ SSH Key สำเร็จ!
5) Reload SSH Service
sudo systemctl restart ssh
ทดสอบอีกครั้ง (Critical Step)
เปิด terminal ใหม่ แล้วลอง
ssh username@your-server-ip
✔️ ต้องเข้าได้
❌ ถ้าเข้าไม่ได้ = เสี่ยง lock ตัวเองออกจาก server
Hardening เพิ่ม (แนะนำ)
เพิ่มความปลอดภัยอีกระดับ
sudo nano /etc/ssh/sshd_config
PermitRootLogin no # ปิด root login
MaxAuthTries 3 # จำกัดจำนวนครั้ง login
AllowUsers username # จำกัด user ที่เข้าได้
MaxAuthTries 3 # จำกัดจำนวนครั้ง login
AllowUsers username # จำกัด user ที่เข้าได้
ตรวจสอบสถานะ
sudo sshd -t # ตรวจ syntax config
sudo systemctl status ssh
ข้อควรระวัง (สำคัญมาก)
- อย่าปิด password ถ้ายัง SSH Key ไม่ work
- Backup ไฟล์ config ก่อนแก้:
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
- เก็บ private key ให้ปลอดภัย (ห้าม upload ขึ้น Git!)
สรุป (ภาคปฏิบัติ)
การปิด password login
- ลดการโจมตีจาก bot / brute-force ได้อย่างมาก
- เป็น best practice สำหรับ production server
- ใช้งานร่วมกับ firewall + fail2ban จะยิ่งแข็งแกร่ง
