หน้าหลักบทความ › SSH Key VPS

ตั้งค่า SSH Key Authentication บน VPS
ปลอดภัยกว่าใช้รหัสผ่านทั่วไป

📅 1 กันยายน 2026 ⏱ อ่าน 12 นาที 🏷 VPS · Security

SSH Key Authentication บน VPS Linux Server

📋 สารบัญ

  1. SSH Key Authentication คืออะไร
  2. ทำไมต้องใช้ SSH Key แทน Password
  3. หลักการทำงานของ SSH Key
  4. สร้าง SSH Key Pair บนเครื่องของคุณ
  5. อัพโหลด Public Key ไปยังเซิร์ฟเวอร์
  6. ตั้งค่า sshd_config เพิ่มความปลอดภัย
  7. ปิด Password Authentication
  8. สำหรับผู้ใช้ Windows
  9. จัดการหลาย SSH Key
  10. แก้ปัญหาที่พบบ่อย
  11. คำถามที่พบบ่อย
  12. สรุป

การใช้ รหัสผ่าน (Password) Login เข้า VPS ทุกวันนี้ถือว่าเสี่ยงมาก เพราะ Bot ทั่วโลกสแกนหาเซิร์ฟเวอร์เปิด Port 22 และพยายาม Brute Force ตลอด 24 ชั่วโมง วิธีแก้ที่ดีที่สุดคือการเปลี่ยนไปใช้ SSH Key Authentication — วิธีนี้ไม่มี Password ให้เดา จึงทำให้การโจมตีแบบ Brute Force เป็นไปไม่ได้เลย

1. SSH Key Authentication คืออะไร

SSH Key Authentication คือระบบพิสูจน์ตัวตนที่ใช้ คู่กุญแจเข้ารหัส (Cryptographic Key Pair) ประกอบด้วย:

เมื่อเชื่อมต่อ เซิร์ฟเวอร์จะส่ง Challenge มาให้ เครื่องของคุณตอบโดยใช้ Private Key เซิร์ฟเวอร์ยืนยันด้วย Public Key — ทั้งกระบวนการไม่มีการส่ง Password ผ่านเครือข่ายเลย

💡 หมายเหตุ: SSH Key ที่นิยมใช้ปัจจุบันมี 2 ประเภทหลักคือ RSA 4096-bit และ Ed25519 โดย Ed25519 ถือว่าดีกว่าในแง่ความปลอดภัยและความเร็ว

2. ทำไมต้องใช้ SSH Key แทน Password

หัวข้อเปรียบเทียบPassword LoginSSH Key Login
ความปลอดภัยจาก Brute Force❌ เสี่ยงสูง✅ ไม่สามารถเดาได้
ความสะดวกในการใช้งานต้องพิมพ์ password ทุกครั้ง✅ ไม่ต้องพิมพ์ (ใช้ Agent)
ความเสี่ยง Phishing❌ Password ถูกขโมยได้✅ Key ไม่ส่งผ่านเครือข่าย
การใช้หลายเซิร์ฟเวอร์ต้องจำหลาย Password✅ ใช้ Key เดียวได้หลายเซิร์ฟเวอร์
การ Audit Logยากต่อการติดตาม✅ ระบุได้ว่าใคร Login
ความต้านทาน Man-in-the-Middle❌ เสี่ยงถ้า TOFU พัง✅ Host Key Pinning ป้องกันได้

ข้อมูลจาก Shodan พบว่าเซิร์ฟเวอร์ที่เปิด SSH ด้วย Password เฉลี่ยถูกโจมตีหลายพันครั้งต่อวัน การเปลี่ยนเป็น SSH Key ปิดช่องโหว่นี้ได้ทันที

3. หลักการทำงานของ SSH Key

กระบวนการ Authentication ด้วย SSH Key เป็นแบบ Asymmetric Cryptography:

  1. Client เชื่อมต่อไปยังเซิร์ฟเวอร์ผ่าน Port 22 (หรือ Port ที่กำหนด)
  2. เซิร์ฟเวอร์ส่ง Random Challenge มาให้ Client
  3. Client ลงนาม (Sign) Challenge ด้วย Private Key
  4. เซิร์ฟเวอร์ตรวจสอบลายเซ็นด้วย Public Key ที่เก็บใน authorized_keys
  5. ถ้าตรงกัน — อนุญาตให้เข้าได้ทันที ไม่มีการส่ง Password เลย
⚠️ ข้อควรระวัง: Private Key คือ "กุญแจบ้าน" ของคุณ ถ้าหายหรือถูกขโมย ต้องลบ Public Key ออกจากเซิร์ฟเวอร์ทันที แล้วสร้างคู่ Key ใหม่

4. สร้าง SSH Key Pair บนเครื่องของคุณ

1เปิด Terminal (macOS/Linux)

รันคำสั่งสร้าง Ed25519 Key (แนะนำสำหรับ 2026):

ssh-keygen -t ed25519 -C "[email protected]"

หรือถ้าต้องการ RSA 4096:

ssh-keygen -t rsa -b 4096 -C "[email protected]"
2ตอบคำถามระหว่างสร้าง Key
Enter file in which to save the key (/home/user/.ssh/id_ed25519): [กด Enter]
Enter passphrase (empty for no passphrase): [ใส่ passphrase หรือกด Enter ข้าม]
Enter same passphrase again: [ยืนยัน passphrase]

แนะนำใส่ Passphrase ด้วย — ถ้ามีคนได้ไฟล์ Private Key ไป ยังต้องรู้ Passphrase อีกชั้น

3ไฟล์ที่ได้หลังสร้าง Key
~/.ssh/id_ed25519      # Private Key — เก็บไว้บนเครื่องคุณ เท่านั้น
~/.ssh/id_ed25519.pub  # Public Key — ส่งขึ้นเซิร์ฟเวอร์

ดู Public Key ของคุณด้วยคำสั่ง:

cat ~/.ssh/id_ed25519.pub

5. อัพโหลด Public Key ไปยังเซิร์ฟเวอร์

วิธีที่ 1: ใช้ ssh-copy-id (ง่ายที่สุด)

ssh-copy-id -i ~/.ssh/id_ed25519.pub username@your-vps-ip

คำสั่งนี้จะ Login ด้วย Password ครั้งสุดท้าย แล้วคัดลอก Public Key ไปใส่ที่ ~/.ssh/authorized_keys บนเซิร์ฟเวอร์โดยอัตโนมัติ

วิธีที่ 2: Copy ด้วยตนเอง

# 1. ดู Public Key บนเครื่อง
cat ~/.ssh/id_ed25519.pub

# 2. Login เข้าเซิร์ฟเวอร์
ssh username@your-vps-ip

# 3. สร้างไดเรกทอรีและไฟล์ (ถ้ายังไม่มี)
mkdir -p ~/.ssh
chmod 700 ~/.ssh

# 4. วาง Public Key
echo "ตัวอย่าง: ssh-ed25519 AAAA...xxx [email protected]" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

ทดสอบ Login ด้วย Key (อย่าปิด Session เดิม!)

# เปิด Terminal ใหม่ แล้วทดสอบ
ssh -i ~/.ssh/id_ed25519 username@your-vps-ip

ถ้า Login สำเร็จโดยไม่ต้องพิมพ์ Password (หรือแค่ Passphrase ของ Key) แสดงว่าพร้อมแล้ว

6. ตั้งค่า sshd_config เพิ่มความปลอดภัย

แก้ไขไฟล์ /etc/ssh/sshd_config บนเซิร์ฟเวอร์:

sudo nano /etc/ssh/sshd_config

ตรวจสอบและตั้งค่าดังนี้:

# ยืนยันว่า Public Key Auth เปิดอยู่
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

# ห้าม Login ด้วย Root โดยตรง
PermitRootLogin no

# จำนวน Auth Attempt สูงสุด
MaxAuthTries 3

# เปลี่ยน Port (ไม่บังคับ แต่ช่วยลด Bot Noise)
# Port 2222

# ปิด X11 Forwarding (ถ้าไม่ใช้)
X11Forwarding no
💡 เคล็ดลับ: การเปลี่ยน SSH Port (เช่น เป็น 2222) ไม่ได้ทำให้ปลอดภัยขึ้นจริง แต่ช่วยลด Log Noise จาก Bot ที่สแกน Port 22 เท่านั้น ถ้าเปลี่ยน Port ต้องเปิด Port ใหม่ใน Firewall ด้วย

7. ปิด Password Authentication

ขั้นตอนนี้สำคัญมาก — ทำหลังจาก ทดสอบ SSH Key Login สำเร็จแล้วเท่านั้น

⚠️ คำเตือน: ห้ามปิด Password Authentication ก่อนที่จะแน่ใจว่า SSH Key Login ทำงานได้ปกติ หากทำผิดลำดับ คุณจะ Lock ตัวเองออกจากเซิร์ฟเวอร์
# ใน /etc/ssh/sshd_config
PasswordAuthentication no
ChallengeResponseAuthentication no
UsePAM no

บันทึกไฟล์แล้ว Restart SSH Service:

# Ubuntu/Debian
sudo systemctl restart ssh

# CentOS/Rocky Linux
sudo systemctl restart sshd

ทดสอบด้วย Terminal ใหม่อีกครั้งว่ายัง Login ได้ — และลองว่าการ Login แบบ Password ถูกปฏิเสธหรือไม่:

ssh -o PasswordAuthentication=yes username@your-vps-ip
# ควรได้ข้อความ: Permission denied (publickey)

8. สำหรับผู้ใช้ Windows

วิธีที่ 1: OpenSSH ใน PowerShell (Windows 10/11)

# เปิด PowerShell แล้วรัน
ssh-keygen -t ed25519

# ดู Public Key
type $env:USERPROFILE\.ssh\id_ed25519.pub

# คัดลอกไปเซิร์ฟเวอร์
ssh-copy-id -i $env:USERPROFILE\.ssh\id_ed25519.pub username@your-vps-ip

วิธีที่ 2: PuTTY + PuTTYgen (สำหรับ PuTTY Users)

  1. เปิด PuTTYgen → เลือก EdDSA หรือ RSA 4096
  2. กด Generate แล้วขยับเม้าส์สร้าง Randomness
  3. คัดลอก Public Key จากช่องด้านบน แล้วนำไปใส่ใน authorized_keys บนเซิร์ฟเวอร์
  4. บันทึก Private Key เป็นไฟล์ .ppk
  5. ในตั้งค่า PuTTY: Connection → SSH → Auth → เลือกไฟล์ .ppk

9. จัดการหลาย SSH Key

เมื่อต้องการใช้หลาย Key สำหรับหลายเซิร์ฟเวอร์ ใช้ไฟล์ ~/.ssh/config:

# ~/.ssh/config
Host my-vps-th
    HostName 203.0.113.10
    User ubuntu
    IdentityFile ~/.ssh/id_ed25519_vps_th

Host my-vps-sg
    HostName 198.51.100.20
    User root
    IdentityFile ~/.ssh/id_ed25519_vps_sg
    Port 2222

จากนั้น Login ด้วยชื่อ Alias ได้เลย:

ssh my-vps-th
ssh my-vps-sg

SSH Agent — ไม่ต้องพิมพ์ Passphrase ทุกครั้ง

# เริ่ม SSH Agent
eval "$(ssh-agent -s)"

# เพิ่ม Key เข้า Agent
ssh-add ~/.ssh/id_ed25519

# ตรวจสอบ Key ที่โหลดแล้ว
ssh-add -l

10. แก้ปัญหาที่พบบ่อย

ปัญหาสาเหตุวิธีแก้
Permission denied (publickey)ไม่พบ Key หรือ authorized_keys ผิด Permissionchmod 700 ~/.ssh, chmod 600 ~/.ssh/authorized_keys
Bad permissions on .sshPermission ไดเรกทอรีไม่ถูกต้องchmod 700 ~/.ssh
Host key verification failedHost Key เปลี่ยน (เซิร์ฟเวอร์ถูก Re-provision)ssh-keygen -R your-vps-ip
Connection refusedSSH Service ไม่ทำงาน หรือ Firewall บล็อก Portตรวจ sudo systemctl status ssh และ Firewall
Warning: Unprotected private keyPermission ไฟล์ Private Key กว้างเกินchmod 600 ~/.ssh/id_ed25519

Debug SSH Connection

# เพิ่ม -v ดู Log ละเอียด
ssh -v username@your-vps-ip

# -vvv สำหรับ Debug เต็มรูปแบบ
ssh -vvv username@your-vps-ip

11. คำถามที่พบบ่อย (FAQ)

Q: SSH Key Authentication คืออะไร ต่างจาก Password อย่างไร?
SSH Key ใช้คู่กุญแจเข้ารหัส (Public/Private Key) แทนรหัสผ่าน ทำให้ Brute Force เป็นไปไม่ได้เพราะ Private Key มีความยาวนับพันบิต ต่างจาก Password ที่มักสั้นและเดาได้
Q: ใช้ RSA หรือ Ed25519 ดีกว่ากันสำหรับ VPS?
Ed25519 แนะนำมากกว่าในปี 2026 เพราะ Key สั้นกว่า แต่ปลอดภัยเทียบเท่า RSA 4096-bit ทั้งยังเร็วกว่าในการตรวจสอบ เซิร์ฟเวอร์ Ubuntu/Debian ทุกรุ่นที่ยังรองรับรองรับ Ed25519 แล้วทั้งหมด
Q: ถ้าหาย Private Key จะเข้าเซิร์ฟเวอร์ได้ไหม?
ไม่ได้ หากหาย Private Key และปิด Password Login ไปแล้ว ต้องเข้าผ่าน VNC/Console ของผู้ให้บริการ VPS เพื่อเพิ่ม Public Key ใหม่ ดังนั้นควร Backup Private Key ไว้หลายที่ (เช่น External Drive, Password Manager)
Q: ต้องตั้งค่า SSH Key ทุกครั้งที่ Re-provision VPS ไหม?
ใช่ หาก Re-provision (ติดตั้งใหม่) เซิร์ฟเวอร์ ต้องอัพโหลด Public Key ใหม่อีกครั้ง บางผู้ให้บริการ VPS รองรับการใส่ SSH Public Key ตั้งแต่ตอนสั่งซื้อ ทำให้สะดวกมากขึ้น
Q: ตั้งค่า SSH Key แล้วควรทำอะไรเพิ่มเพื่อความปลอดภัย?
นอกจาก SSH Key แล้ว ควร: (1) ติดตั้ง Fail2Ban บล็อก IP ที่พยายาม Login มากผิดปกติ (2) เปลี่ยน SSH Port จาก 22 เป็นอื่น ลด Bot Noise (3) ตั้งค่า UFW Firewall เปิดเฉพาะ Port ที่ใช้งาน (4) อัพเดต OS สม่ำเสมอ
Q: ใช้ SSH Key หลายคนในทีมได้ไหม?
ได้ เพียงเพิ่ม Public Key ของแต่ละคนในไฟล์ ~/.ssh/authorized_keys (แต่ละ Key อยู่บรรทัดแยก) เมื่อต้องการยกเลิกสิทธิ์ลบบรรทัด Public Key ของคนนั้นออก และ Reload SSH Service

12. สรุป

การตั้งค่า SSH Key Authentication บน VPS เป็นขั้นตอนพื้นฐานที่ควรทำทันทีหลังได้ VPS มา มีประโยชน์ดังนี้:

พร้อม Deploy VPS ที่ปลอดภัย?

AsiaGB.com มี VPS ไทยและสิงคโปร์ SSD ความเร็วสูง Uptime 99% พร้อม Support ภาษาไทย

ดูแพ็กเกจ VPS