น่าจะเคยมีประสบการณืกันบ้างแหล่ เวลาเข้า SSH ของตัวเองแล้วเจอไรแบบ You got 1112 failed login attempts since your last login
ถ้าเจอแบบนี้ก็คือมีคนกำลัง Brute Force หารหัสผ่านที่ถูกอยู่ซึ่งจะเจอตอนไหนก็ต้องมานั่งลุ้นกันเอาอีก ดังนั้นเราจะมานำเสนอวิธีการ Login เข้า SSH อีกวิธีนึงที่ปลอดภัยกว่านั่นก็คือ SSH Authentication นั่นเอง
ขั้นตอนที่ 1: สร้าง Private Key และ Public Key บนคอมตัวเอง
$ ssh-keygen -t rsa
คราวนี้ตัว ssh-keygen จะถามว่าจะให้เก็บ Private Key ที่ไหน ก็จะตั้งชื่อไฟล์ว่า id_rsa
เก็บไว้ที่ ~/.ssh
Enter file in which to save the key (/home/demo/.ssh/id_rsa):
จากนั้นก็จะให้ตั้งรหัส Passphrase แนะนำให้ทำขั้นตอนนี้เพราะถ้า Private Key โดนขโมยอย่างน้องต้องใส่รหัสก่อนถึงจะใช้งานได้
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
พอเสร็จแล้วจะได้ผลออกมาแบบนี้
Your identification has been saved in /home/rayriffy/.ssh/id_rsa.
Your public key has been saved in /home/rayriffy/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:o7VgSJEqd5FU8rZR2++XMlgU0wCBGbxx1yTFBT/GFlY rayri@RIFFY-DELL
The key's randomart image is:
+---[RSA 2048]----+
| .++..o+oo=B+=E|
| ++ .=o. .+*..|
| ...+ .+... =.|
|. o..o o. o o .|
| o .. + S o |
| . + o + . |
| . . . + o |
| + |
| |
+----[SHA256]-----+
พอถึงจุดนี้ก็จะได้ Public Key และ Private Key แล้ว
- Private Key: /home/rayriffy/.ssh/id_rsa
- Public Key: /home/rayriffy/.ssh/id_rsa.pub
ขั้นตอนที่ 2: เอา Public Key ขึ้น Server
มีให้อยู่ 3 วิธี
วิธีที่ 1: ใช้ ssh-copy-id
ง่ายมากยิงคำสั่งทีเดียวได้เลย
$ ssh-copy-id rayriffy@1.2.3.4
ย้ำ! ถ้าใช้ macOS อย่าลืมติดตั้งโดยใช้ Homebrew
$ brew install ssh-copy-id
วิธีที่ 2: อ่านไฟล์ ก็อป วาง
$ cat ~/.ssh/id_rsa.pub | ssh rayriffy@1.2.3.4 "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys"
ขั้นตอนที่ 3: ปิดไม่ให้ Server สามารถ Login ด้วยวิธี Password ธรรมดาได้ (แล้วแต่ จะทำหรือไม่ทำก็ได้)
เปิดไฟล์ config ของ SSH
$ vim /etc/ssh/sshd_config
แก้บรรทัด PermitRootLogin
ให้เป็น without-password
PermitRootLogin without-password
แล้วก็ Restart Service ซะ
$ sudo systemctl reload sshd
ขั้นตอนที่ 4: พร้อมใช้งาน!
ถ้ายังตั้งค่าไม่เป็นอีกก็ตามนี้เลยล่ะกัน
บนคอมเราให้เปิดไฟล์ .ssh/config
$ vim ~/.ssh/config
แล้วใส่ก้อนนี้ลงไป
Host 1.2.3.4
PubkeyAuthentication yes
IdentityFile ~/.ssh/id_rsa
อันนี้แปลว่าให้ใช้ไฟล์ ~/.ssh/id_rsa
เป็น Private Key สำหรับเข้า Server 1.2.3.4
แบบ PubkeyAuthentication
แล้วก็ ssh โลด
$ ssh rayriffy@1.2.3.4
สรุป
การเปลี่ยนมาใช้ SSH Authtication ทำให้ Server ที่เรารักหวงแหนมีความปลอดภัยมากขึ้น
ก็หวังว่าหลังจากอ่านบทความนี้ จะมีความสุขกับการใช้ SSH Key กันนะครัช ;)