วิธีเชื่อมต่อเซิร์ฟเวอร์ระยะไกลผ่าน SSH โดยไม่ต้องพิมพ์รหัสผ่าน
เรียนรู้วิธีตั้งค่า SSH Key Authentication ภายใน 5 นาที เพื่อความปลอดภัยและขจัดความน่าเบื่อในการพิมพ์รหัสผ่านทุกครั้งที่รีโมทเข้าเซิร์ฟเวอร์

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง
- ตั้งค่าเสร็จสิ้นภายใน 5 นาทีผ่านบรรทัดคำสั่ง
- ใช้กุญแจเข้ารหัส Ed25519 เพื่อความปลอดภัยสูงสุด
- จัดการเซิร์ฟเวอร์หลายตัวได้ง่ายด้วยไฟล์ Config
ในฐานะวิศวกรระบบปฏิบัติการ การเชื่อมต่อ SSH เข้าสู่เซิร์ฟเวอร์ระยะไกลคือชีวิตประจำวัน ความหงุดหงิดจากการต้องพิมพ์รหัสผ่านบนหน้าจอเทอร์มินัลที่เย็นเยียบตอนตี 3 เป็นเรื่องที่พบได้บ่อยจนกระทั่งได้รู้จักกับการยืนยันตัวตนด้วย SSH Key ซึ่งเปลี่ยนแปลงวิธีการทำงานไปอย่างสิ้นเชิง
บทความนี้จะแสดงวิธีตั้งค่าทั้งหมดภายในเวลาไม่ถึง 5 นาที โดยไม่ต้องใช้เครื่องมือ GUI หรือซอฟต์แวร์ราคาแพง อาศัยเพียงแค่คอมมานด์ไลน์เท่านั้น แม้การยืนยันตัวตนด้วยรหัสผ่านจะยังมีประโยชน์สำหรับสิทธิ์ชั่วคราวหรือเครื่องที่ใช้ร่วมกัน แต่สำหรับงานที่ต้องจัดการเป็นประจำ การใช้คีย์คือคำตอบที่ดีที่สุด

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง
ขั้นตอนแรกคือการสร้างคู่คีย์ (Key Pair) บนเครื่องของคุณด้วยคำสั่ง ssh-keygen -t ed25519 -C "your_email@example.com" โดยแนะนำให้ใช้ Ed25519 เนื่องจากมีความเร็วและปลอดภัยกว่ามาตรฐาน RSA แบบเก่า ยกเว้นกรณีที่ต้องทำงานร่วมกับระบบเก่าที่ยังไม่รองรับ จึงค่อยเปลี่ยนไปใช้ ssh-keygen -t rsa -b 4096 แทน
การใช้ SSH Key (Asymmetric Cryptography) อาศัยหลักการทางคณิตศาสตร์ของกุญแจคู่สาธารณะและส่วนตัว (Public/Private Key) ซึ่งมีความปลอดภัยสูงกว่าการใช้รหัสผ่านแบบเดิมที่มักจะคาดเดากับดักจับได้ง่ายผ่านการโจมตีแบบ Brute-force นอกจากนี้ยังช่วยลดความเสี่ยงจากการเผลอพิมพ์รหัสผ่านผิดซ้ำๆ บนเซิร์ฟเวอร์สำคัญ
หลังจากได้คีย์มาแล้ว ให้คัดลอกกุญแจสาธารณะไปยังเซิร์ฟเวอร์ปลายทางด้วยคำสั่ง ssh-copy-id username@server_ip ระบบจะขอรหัสผ่านของเซิร์ฟเวอร์เป็นครั้งสุดท้าย หลังจากนั้นคีย์สาธารณะจะถูกผนวกเข้ากับไฟล์ ~/.ssh/authorized_keys บนเครื่องรีโมทโดยอัตโนมัติ
เมื่อทดสอบเชื่อมต่อด้วย ssh username@server_ip หากระบบยอมให้เข้าสู่ระบบโดยไม่ต้องถามรหัสผ่าน แสดงว่าการตั้งค่าสำเร็จ แต่หากยังติดขัด ให้ตรวจสอบการตั้งค่าไฟล์ sudo nano /etc/ssh/sshd_config โดยกำหนดให้ PasswordAuthentication no และ PubkeyAuthentication yes จากนั้นรีสตาร์ทบริการด้วยคำสั่ง sudo systemctl restart sshd
คำเตือนสำคัญคือ ควรเปิดเซสชันปัจจุบันค้างไว้ในขณะทำการทดสอบ เพื่อให้สามารถแก้ไขข้อผิดพลาดได้ทันทีหากมีสิ่งผิดปกติเกิดขึ้น ป้องกันการถูกล็อกไม่ให้เข้าสู่ระบบของตนเอง
เมื่อโครงสร้างพื้นฐานขยายใหญ่ขึ้นและคุณเริ่มสะสมคีย์จำนวนมาก การจัดการผ่านไฟล์ Config จะช่วยให้ชีวิตง่ายขึ้นมาก โดยสามารถตั้งค่าชื่อโฮสต์ ไอพี ผู้ใช้งาน และไฟล์ไอเดนทิตีแยกตามโปรดักชันหรือสเตจจิ้งได้ จากนั้นจึงเรียกใช้งานผ่านคำสั่งสั้นๆ เช่น ssh production หรือ ssh staging
นอกจากนี้ควรหมุนเวียนคีย์ทุกๆ 90 วันโดยการสร้างคีย์ใหม่ และย้ายคีย์เก่าไปเก็บไว้ในไฟล์ revoked_keys บนเซิร์ฟเวอร์ การตั้งค่า SSH Key ใช้เวลาเพียงน้อยนิดแต่มอบคุณประโยชน์มหาศาลตลอดหลายปีข้างหน้า ไร้ซึ่งความเหนื่อยล้าจากรหัสผ่านและความกังวลเรื่องการโจมตี
ที่มา: Dev.to
พบข้อมูลผิดพลาดในบทความนี้? แจ้งปัญหาบทความนี้
ความคิดเห็น
แสดงความคิดเห็น