SSH Key Authentication เป็นหนึ่งในวิธีรักษาความปลอดภัยในการกำหนดสิทธิ์การเข้าถึงให้แก่ผู้ใช้เข้าไปยังเซิร์ฟเวอร์รหัสผ่านตามมาตรฐานที่ใช้ในการเข้าสู่ระบบไปยังเซิร์ฟเวอร์ได้ถูกแทนที่ด้วย SSH Key โดยจะแสดงเมื่อต้องการตรวจสอบ SSH Key จะเพิ่มความปลอดภัยให้มาขึ้น สามารถใช้เป็นรหัสผ่านแม้ในที่สุดจะมีโอกาสถูก Hack โดยใช้ Brute Force โจมตีแบบเดารหัสผ่านโดยการสุ่มไปเรื่อยๆ ทำให้การโจมตีทำได้รวดเร็ว หากรหัสง่ายเกินไปก็จะถูก Hack ได้ง่าย แต่การใช้ SSH key นั้นการ Hack ทำได้ยากขึ้นเพราะต้องใช้ private key และ public key คู่กัน วิธีการสร้าง ssh-key ทำได้ดังนี้

ใช้คำสั่ง ssh-keygen ที่เครื่อง client ดังนี้

ssh-keygen -t rsa

ssh-keygen จะถามว่าจะสร้าง key ไว้ที่ไหนและใช้ชื่อว่าอะไร กำหนดตำแหน่งที่บันทึกภายในไดเรคทอรี home

กำหนดรหัสผ่านให้ ปลอดภัยเพิ่มเติมให้ ซึ่งหมายความว่า Key ไม่สามารถใช้งานได้โดยไม่มีรหัสผ่านจะเป็นการเพิ่มความปลอดภัยของ Key สามารถย้อนกลับถ้าหากไม่ต้องการที่จะใช้รหัสผ่าน

จะได้ Key ขึ้นมา 2 ตัวในไดเรคทอรี home ของตัวเอง เช่น /home/james/.ssh

  • private key : id_rsa
  • public key : id_rsa.pub

จากนั้นคัดลอก public key ไปยังเครื่องปลายทางที่ต้องการเชื่อมต่อ ในระบบปฏิบัติการ Debian หรือ Ubuntu สามารถใช้คำสั่ง ssh-copy-id ตามด้วย user@ip หรือ user@hostname ที่ใช้สำหรับรีโมท ดังนี้

ssh-copy-id -i user@hostname

หรือ

ssh-copy-id -i user@ip

Linux distribution อื่นๆ อาจไม่มีคำสั่ง ssh-copy-id เราสามารถใช้คำสั่งเพื่อคัดลอก ssh-key ไปยังเครื่องปลายทางดังนี้

cat /home/james/.ssh/id_rsa.pub | ssh [USER]@[SERVER] "cat >> ~/.ssh/authorized_keys"

ไฟล์ authorized_keys เป็นไฟล์ที่จัดเก็บ Public Key ของเครื่อง client ที่ต้องการ access เข้าเครื่อง server เมื่อทำการคัดลอก Public Key ไปยังเครื่องปลายทางแล้ว เราสามารถ ssh เพื่อเข้าถึงเครื่องปลายทางได้โดยไม่ต้องใส่รหัสผ่าน โดยใช้คำสั่ง ssh ตามปกติ ดังนี้

ssh username@hostname 

อ้างอิง – Create ssh-key authentication between nodes

Comments are closed.