SSH Key เป็นการเปลี่ยนการ Authentication ในรูปแบบการกรอก username , password เปลี่ยนเป็นการใช้งาน key pair แทน คือการใช้งาน public key และ private key ข้อดีคือปลอดภัยกว่าการใช้งาน password ในเรื่องของการถูก Brute Force Attack ,หรือโดนโปรแกรมประเภท Key Logger ดัก keyboard เป็นต้น โดยเราสามารถเพิ่มความ Secure ไปได้อีกชั้นคือสามารถตั้งรหัส passphrase ด้วยก็ได้ครับ
เครื่องที่ใช้ในการทดสอบครั้งนี้
sv1 – 172.16.209.137 (สร้าง key และใช้งาน private key)
sv2 – 172.16.209.138 (ทดสอบใช้งาน public key) กระบวนการทำงานของ SSH Key Pair 1 )
เริ่มด้วยการ generate Public Key และ Private Key
ssh-keygen -t rsa
หากต้องการใช้งาน Passphrase ก็ตั้งรหัสผ่านได้เลย ในที่นี้ผมจะกด enter เลยไม่ตั้งรหัสผ่าน (Passphrase พูดง่ายๆคือ Master Password เอาไว้ปลอล็อคการใช้งาน Key นั่นเอง)
หลังเสร็จกระบวนการนี้ก็จะได้ไฟล์มา 2 ไฟล์คือ Private Key (/root/.ssh/id_rsa) กับ Public Key (/root/.ssh/id_rsa.pub) โดยการใช้งานคือ เราจะนำเอา Public Key ไปใส่ไว้ใน Server ที่เราต้องการ และเก็บ Private Key ไว้สำหรับ remote access เข้าไปเครื่องเซิฟเวอร์ที่มี Public Key ฝังอยู่นั่นเอง ทดสอบนำ Public Key ไปใส่ไว้เครื่อง sv2
ssh-copy-id [email protected]
หรือนำไฟล์ Public Key ไปใส่ไว้ที่ Path ~/.ssh/authorized_keys
ทดสอบ Login อีกครั้งโดยใช้งาน Key
ssh [email protected]
สังเกตุว่าจะสามารถ remote ssh ได้โดยที่ไม่มีการถาม Password เพราะว่าโดย default แล้ว linux จะทำการอ่าน private key จากไฟล์ ~/.ssh/id_rsa จากขั้นตอนข้างต้นผมได้ทำการใส่ private key ไว้จึงทำให้สามารถ remote ได้เลยแต่ถ้าหากไม่ได้มีการใส่ private key ไว้ในไฟล์นี้ก็ให้ทำการเรียก Private Key โดยใช้ Argument -i แทน เช่น
ssh -i /path/key [email protected]
กระบวนการใช้งาน SSH Key ก็มีเท่านี้ ต่อไปเราจะมา Config SSH เพื่อปิดการใช้งาน Password กันต่อโดยเข้าไปแก้ไขไฟล์
/etc/ssh/sshd_config
โดยเปลี่ยนจาก
#PermitRootLogin yes
แก้ไขเป็น
PermitRootLogin without-password
หลังจากนั้นทำการ restart sshd เพื่อรีโหลดค่า config ใหม่
service sshd restart
หากลองทดสอบ login ด้วย Password ดูก็จะไม่สามารถ Access ได้ครับ