เลิกใช้ SSH login ด้วย password แล้วมาใช้ key กันเถอะ

เลิกใช้ SSH login ด้วย password แล้วมาใช้ key กันเถอะ

key based authentication

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 root@172.16.209.137

หรือนำไฟล์ Public Key ไปใส่ไว้ที่ Path ~/.ssh/authorized_keys

ทดสอบ Login อีกครั้งโดยใช้งาน Key

ssh root@172.16.209.137


Screen Shot 2558-12-14 at 2.39.22 AM

สังเกตุว่าจะสามารถ remote ssh ได้โดยที่ไม่มีการถาม Password เพราะว่าโดย default แล้ว linux จะทำการอ่าน private key จากไฟล์ ~/.ssh/id_rsa จากขั้นตอนข้างต้นผมได้ทำการใส่ private key ไว้จึงทำให้สามารถ remote ได้เลยแต่ถ้าหากไม่ได้มีการใส่ private key ไว้ในไฟล์นี้ก็ให้ทำการเรียก Private Key โดยใช้ Argument -i แทน เช่น

ssh -i /path/key root@172.16.209.137

กระบวนการใช้งาน SSH Key ก็มีเท่านี้ ต่อไปเราจะมา Config SSH เพื่อปิดการใช้งาน Password กันต่อโดยเข้าไปแก้ไขไฟล์

/etc/ssh/sshd_config

โดยเปลี่ยนจาก

#PermitRootLogin yes

แก้ไขเป็น

PermitRootLogin without-password

Screen Shot 2558-12-14 at 2.49.01 AM

หลังจากนั้นทำการ restart sshd เพื่อรีโหลดค่า config ใหม่

service sshd restart

หากลองทดสอบ login ด้วย Password ดูก็จะไม่สามารถ Access ได้ครับ

Screen Shot 2558-12-14 at 2.52.40 AM