Ssh Key Based Auth Secure IT General

Ssh Key Based Auth Secure

📅 2026-02-09 | โดย อ.บอม กิตติทัศน์ เจริญพนาสิทธิ์ — SiamCafe.net Since 1997

Ssh Key Based Auth Secure คืออะไร / ทำไมถึงสำคัญ

น้องๆ เคยเจอปัญหา login server ด้วย password แล้วโดนแฮกไหม? สมัยผมทำร้านเน็ต SiamCafe.net เมื่อ 20 กว่าปีที่แล้ว (โอ้โห นานจัง!) ก็เจอปัญหาคนแอบ scan password กันบ่อยมาก Ssh Key Based Auth นี่แหละคือพระเอกของเรา ช่วยให้การ login ปลอดภัยขึ้นเยอะเลย

Ssh Key Based Auth หรือการยืนยันตัวตนด้วยกุญแจ SSH แทน password คือการใช้คู่กุญแจ (public key และ private key) ในการยืนยันตัวตนแทนการใช้ password แบบเดิมๆ Public key เราจะเอาไปใส่ไว้ใน server ส่วน private key เราจะเก็บไว้ในเครื่องเราอย่างดี เวลา login server จะตรวจสอบ private key ของเรากับ public key ที่เก็บไว้ ถ้า match กัน ก็แปลว่าเราเป็นเจ้าของ account จริงๆ ไม่ต้องใส่ password ให้เสี่ยงโดนดักเลย

สำคัญยังไงเหรอ? ก็เพราะมันปลอดภัยกว่าไง! Password มันเดาง่าย โดน brute-force ได้ แต่ private key มันซับซ้อนกว่าเยอะ แถมต่อให้คนร้ายได้ private key ไป ก็ต้องเจาะเข้าเครื่องเราก่อนถึงจะเอาไปใช้ได้อีกที

พื้นฐานที่ต้องรู้

กุญแจ Public Key และ Private Key คืออะไร

คิดง่ายๆ public key เหมือนแม่กุญแจที่เราเอาไปให้คนอื่นไข ส่วน private key คือลูกกุญแจที่เราเก็บไว้เอง ใครมีลูกกุญแจก็เปิดแม่กุญแจได้ แต่ใครมีแม่กุญแจอย่างเดียวเปิดไม่ได้นะ

Public key เอาไว้ใส่ใน server เพื่อบอกว่า "ใครมี private key ที่คู่กัน สามารถ login เข้ามาได้นะ" ส่วน private key เอาไว้ในเครื่องเรา เพื่อยืนยันว่า "นี่ไง private key ของฉัน ตรงกับ public key ที่เธอมีนะ"

สมัยก่อนตอนทำร้านเน็ต SiamCafe Blog ผมต้องสอนลูกค้าเรื่องนี้กันเยอะมาก เพราะมันใหม่สำหรับคนทั่วไป

SSH Protocol ทำงานยังไง

SSH (Secure Shell) คือ protocol ที่ใช้ในการเชื่อมต่อและควบคุมเครื่อง server จากระยะไกล มันเข้ารหัสข้อมูลทุกอย่างที่ส่งผ่าน ทำให้คนดักฟังระหว่างทางไม่สามารถอ่านข้อมูลของเราได้

การ login ด้วย password คือการส่ง password ไปให้ server ตรวจสอบ ซึ่งมันเสี่ยงถ้ามีคนดักฟัง แต่การ login ด้วย key จะใช้การเข้ารหัสและถอดรหัสข้อมูลระหว่าง client และ server โดยใช้ public key และ private key ทำให้ปลอดภัยกว่าเยอะ

ไฟล์ authorized_keys คืออะไร

ไฟล์นี้แหละคือที่เก็บ public key ของเราใน server ปกติมันจะอยู่ใน directory ~/.ssh/authorized_keys (~ หมายถึง home directory ของ user นั้นๆ) เวลาเรา login เข้า server ด้วย key, SSH daemon จะตรวจสอบว่า private key ของเราตรงกับ public key ที่อยู่ในไฟล์นี้หรือไม่ ถ้าตรงก็ให้ login ได้เลย

วิธีใช้งาน / เริ่มต้นยังไง

การใช้งาน SSH Key Based Auth ไม่ยากอย่างที่คิด ลองทำตามขั้นตอนง่ายๆ นี้ดูนะ

ขั้นตอนปฏิบัติจริง

สร้างคู่กุญแจ (Public/Private Key Pair)

เราจะใช้คำสั่ง ssh-keygen ในการสร้างคู่กุญแจ เปิด Terminal หรือ Command Prompt แล้วพิมพ์:

ssh-keygen -t rsa -b 4096

-t rsa คือการระบุว่าเราจะใช้ algorithm RSA ในการสร้าง key (จริงๆ มี algorithm อื่นๆ อีก เช่น ed25519 แต่ RSA ก็ยังเป็นที่นิยมอยู่) -b 4096 คือการระบุความยาวของ key เป็น 4096 bits (ยิ่งยาวก็ยิ่งปลอดภัย แต่ก็อาจจะช้าลงนิดหน่อย)

ระบบจะถามว่าจะ save key ไว้ที่ไหน (default คือ ~/.ssh/id_rsa และ ~/.ssh/id_rsa.pub) และจะถาม passphrase (password สำหรับ key) ถ้าใส่ passphrase เวลาใช้ key จะต้องใส่ password นี้ก่อนด้วย เพิ่มความปลอดภัยอีกชั้นหนึ่ง

อัพโหลด Public Key ไปยัง Server

หลังจากสร้าง key แล้ว เราต้องเอา public key (ไฟล์ ~/.ssh/id_rsa.pub) ไปใส่ไว้ใน server วิธีที่ง่ายที่สุดคือใช้คำสั่ง ssh-copy-id:

ssh-copy-id user@server_ip

แทน user ด้วย username ของ account ใน server และ server_ip ด้วย IP address ของ server ระบบจะให้ใส่ password ของ user นั้นๆ เพื่อทำการ copy public key ไปยัง server

ถ้า ssh-copy-id ใช้ไม่ได้ (เช่น server เก่ามากๆ) เราสามารถ copy public key ไปใส่ในไฟล์ ~/.ssh/authorized_keys ด้วยตัวเองได้ โดยใช้คำสั่ง:

cat ~/.ssh/id_rsa.pub | ssh user@server_ip "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"

คำสั่งนี้จะสร้าง directory ~/.ssh (ถ้ายังไม่มี) และ copy public key ไปใส่ในไฟล์ ~/.ssh/authorized_keys

ทดสอบ Login โดยไม่ใช้ Password

หลังจากอัพโหลด public key ไปแล้ว ลอง login เข้า server ดู โดยไม่ต้องใส่ password:

ssh user@server_ip

ถ้าทุกอย่างถูกต้อง เราควรจะ login เข้า server ได้เลย โดยไม่ต้องใส่ password อีกต่อไป

สมัยผมทำร้านเน็ต SiamCafe Blog ตอนนั้นพวกระบบจัดการร้านยังไม่ค่อยดีเท่าไหร่ ผมต้อง ssh เข้าไปจัดการ server บ่อยมาก การใช้ key ช่วยลดความยุ่งยากไปได้เยอะ

เปรียบเทียบกับทางเลือกอื่น

วิธีการยืนยันตัวตน ข้อดี ข้อเสีย ความปลอดภัย
Password Authentication ง่ายต่อการใช้งาน เสี่ยงต่อการถูก brute-force, dictionary attack ต่ำ
SSH Key Based Authentication ปลอดภัยกว่า, ไม่ต้องจำ password ซับซ้อนกว่า, ต้องจัดการ key สูง
Two-Factor Authentication (2FA) ปลอดภัยสูง, ต้องใช้ password + code ยุ่งยากกว่า, ต้องมีอุปกรณ์สำหรับ 2FA สูงมาก

จะเห็นว่าแต่ละวิธีก็มีข้อดีข้อเสียต่างกัน แต่ถ้าเน้นความปลอดภัย SSH Key Based Authentication ถือว่าเป็นทางเลือกที่ดีมากๆ เลยแหละ

ข้อควรระวัง

Best Practices / เคล็ดลับจากประสบการณ์

SSH Key Based Auth นี่มันของดีจริงๆ ครับ แต่ต้องใช้ให้เป็นนะ สมัยผมทำร้านเน็ตนี่โดนแฮกกันบ่อยมาก เพราะรหัสผ่านมันง่ายเกินไป พอเปลี่ยนมาใช้ Key Based Auth นี่สบายใจขึ้นเยอะเลย แต่ก็ต้องมีเทคนิคกันหน่อยนะ

3-4 เทคนิคที่ใช้ได้จริง

1. Passwordless Login ไม่ได้แปลว่าไม่ต้องมี Password เลย: หลายคนเข้าใจผิดว่าพอใช้ Key Based Auth แล้วจะเลิกรหัสผ่านได้เลย ไม่ใช่นะ! ควรตั้งรหัสผ่านให้ User account ด้วย (Strong Password นะ) เผื่อกรณีที่ Key หาย หรือโดนขโมย รหัสผ่านนี่แหละจะเป็นปราการด่านสุดท้าย

2. อย่าใช้ Default Key Name: เวลา generate SSH Key คู่แรกๆ หลายคนมักจะใช้ชื่อ default คือ id_rsa, id_rsa.pub อันนี้ไม่ดีครับ เพราะถ้า Hacker ได้ Key ไป เขาจะรู้ทันทีว่ามันคือ Key อะไร ควรเปลี่ยนชื่อให้มันยากๆ หน่อย เช่น my_secret_server_key

ssh-keygen -t rsa -b 4096 -f ~/.ssh/my_secret_server_key

3. SSH Key Rotation: เหมือนเปลี่ยนรหัสผ่านนั่นแหละครับ ควรเปลี่ยน SSH Key เป็นระยะๆ เช่น ทุก 3 เดือน 6 เดือน หรือ 1 ปี แล้วแต่ความสำคัญของ Server ตัวนั้นๆ วิธีนี้จะช่วยลดความเสี่ยงกรณีที่ Key โดน Compromise ไปแล้ว แต่เรายังไม่รู้ตัว

4. ใช้ SSH Agent Forwarding อย่างระมัดระวัง: SSH Agent Forwarding มันสะดวกมากครับ ทำให้เราไม่ต้องใส่ Passphrase ทุกครั้งที่ SSH เข้าไป แต่ก็มีความเสี่ยง ถ้าเครื่องเราโดนแฮก Hacker ก็จะสามารถ Forward Agent ไป SSH เข้า Server อื่นๆ ได้เลย ทางที่ดีคือ Enable เฉพาะตอนที่จำเป็นจริงๆ และปิดมันเมื่อใช้งานเสร็จ

iCafeForex

FAQ คำถามที่พบบ่อย

ทำไมต้องใช้ Key Based Auth แทน Password?

Password มันเดาง่ายครับ! คนส่วนใหญ่มักจะใช้รหัสผ่านที่ง่ายต่อการจำ เช่น วันเกิด ชื่อสัตว์เลี้ยง หรือคำศัพท์ทั่วไป Hacker เขามีเครื่องมือช่วยในการเดารหัสผ่านพวกนี้อยู่แล้ว (Brute-Force Attack) แต่ Key Based Auth มันใช้หลักการเข้ารหัสลับที่ซับซ้อนกว่ามาก ทำให้เดาได้ยากกว่าเยอะ

ถ้า Private Key หาย หรือโดนขโมย ต้องทำยังไง?

รีบเข้าไปลบ Public Key ที่อยู่ใน ~/.ssh/authorized_keys ของ Server ทันทีครับ! แล้วก็ Generate Key คู่ใหม่ แล้วเอา Public Key ไปใส่แทนที่ Key เก่า

Private Key ต้องเก็บไว้ที่ไหน?

เก็บไว้ในที่ที่ปลอดภัยครับ! เช่น บนเครื่องคอมพิวเตอร์ส่วนตัวที่ตั้งรหัสผ่านไว้ หรือจะใช้ Hardware Security Module (HSM) ก็ได้ แต่ที่สำคัญคือ อย่าเก็บ Private Key ไว้ใน Cloud Storage หรือ Email เด็ดขาด!

Passphrase คืออะไร? ทำไมต้องใส่?

Passphrase ก็คือรหัสผ่านสำหรับ Private Key ของเราครับ มันเป็นเหมือนปราการด่านที่สอง ถ้า Hacker ได้ Private Key ไป แต่ไม่มี Passphrase ก็ไม่สามารถใช้ Key นั้นได้

SiamCafe Blog

สรุป

SSH Key Based Auth เป็นเครื่องมือที่ช่วยเพิ่มความปลอดภัยให้กับ Server ของเราได้จริง แต่ต้องใช้อย่างถูกวิธีนะครับ อย่าลืมทำตาม Best Practices ที่ผมแนะนำไป แล้ว Server ของคุณก็จะปลอดภัยจาก Hacker มากขึ้นแน่นอน