SSH (Secure Shell) คืออะไร?
SSH (Secure Shell) คือโปรโตคอลที่ใช้สำหรับการสื่อสารระหว่างเครื่องคอมพิวเตอร์ผ่านเครือข่ายโดยมีการเข้ารหัสเพื่อเพิ่มความปลอดภัย SSH ถูกใช้บ่อยในการเข้าถึงและจัดการเครื่องเซิร์ฟเวอร์จากระยะไกลอย่างปลอดภัย
การสื่อสารด้วย SSH มีการเข้ารหัสข้อมูลที่ส่งระหว่างเครื่องต้นทางและเครื่องปลายทาง เพื่อป้องกันการดักฟังและการแก้ไขข้อมูลโดยบุคคลที่สาม
ส่วนประกอบของ SSH
1. The Public Key
Public key ถูกสร้างจากเครื่องต้นทางและนำไปวางไว้บนเครื่องเซิร์ฟเวอร์ปลายทาง ใช้สำหรับการทำ public-key cryptography
2. The Private Key
Private key ถูกสร้างมาพร้อมกับ public key แต่จะถูกเก็บไว้ในเครื่องต้นทางเท่านั้น ใช้สำหรับการพิสูจน์ตัวตนว่าเรามีสิทธิ์ในการเข้าถึงเครื่องเซิร์ฟเวอร์จริงๆ
ขั้นตอนการสร้าง SSH Key Pair และการใช้งาน
ขั้นตอนที่ 1: สร้าง SSH Key Pair
คุณสามารถใช้คำสั่ง ssh-keygen
ในการสร้างคู่กุญแจ SSH (SSH Key Pair) บนเครื่องของคุณ:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
คำอธิบาย:
-t rsa
: ระบุประเภทของกุญแจที่ใช้สร้าง (ในที่นี้คือ RSA)-b 4096
: ระบุความยาวของกุญแจ (ในที่นี้คือ 4096 บิต)-C "your_email@example.com"
: เพิ่มคอมเมนต์ไปยังกุญแจ (มักใช้เป็นอีเมลของคุณ)
หลังจากรันคำสั่งนี้ คุณจะต้องตอบคำถามบางอย่าง เช่น ตำแหน่งที่ต้องการเก็บกุญแจและพาสเฟส (passphrase) เพื่อเพิ่มความปลอดภัย (สามารถกด Enter เพื่อใช้ค่าเริ่มต้นได้)
ขั้นตอนที่ 2: คัดลอก Public Key ไปยังเซิร์ฟเวอร์
ใช้คำสั่ง ssh-copy-id
เพื่อคัดลอก public key ของคุณไปยังเซิร์ฟเวอร์:
ssh-copy-id username@remote_host
คำอธิบาย:
username
: ชื่อผู้ใช้บนเครื่องเซิร์ฟเวอร์remote_host
: ที่อยู่ IP หรือชื่อโดเมนของเครื่องเซิร์ฟเวอร์
คำสั่งนี้จะคัดลอก public key ของคุณไปยังไฟล์ ~/.ssh/authorized_keys
บนเครื่องเซิร์ฟเวอร์
ขั้นตอนที่ 3: เข้าถึงเซิร์ฟเวอร์ด้วย SSH
หลังจากคัดลอก public key ไปยังเซิร์ฟเวอร์แล้ว คุณสามารถใช้คำสั่ง ssh
เพื่อเข้าสู่เครื่องเซิร์ฟเวอร์ได้:
ssh username@remote_host
คำอธิบาย:
username
: ชื่อผู้ใช้บนเครื่องเซิร์ฟเวอร์remote_host
: ที่อยู่ IP หรือชื่อโดเมนของเครื่องเซิร์ฟเวอร์
ตัวอย่างการใช้งาน:
$ ssh-keygen -t rsa -b 4096 -C "user@example.com"
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa):
Created directory '/home/user/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/user/.ssh/id_rsa.
Your public key has been saved in /home/user/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:...
The key's randomart image is:
+---[RSA 4096]----+
| .. |
| .o o |
|..+o+o |
|oo.*X.. |
| +B=..o S |
| +.=... |
| o . . |
| E |
+----[SHA256]-----+
$ ssh-copy-id user@192.168.1.100
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/user/.ssh/id_rsa.pub"
The authenticity of host '192.168.1.100 (192.168.1.100)' can't be established.
ECDSA key fingerprint is SHA256:...
Are you sure you want to continue connecting (yes/no)? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
user@192.168.1.100's password:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh 'user@192.168.1.100'"
and check to make sure that only the key(s) you wanted were added.
$ ssh user@192.168.1.100
Welcome to Ubuntu 20.04 LTS (GNU/Linux 5.4.0-26-generic x86_64)
...
user@remote_host:~$
ข้อดีของการใช้ SSH
- ความปลอดภัย: ข้อมูลที่ส่งผ่าน SSH ถูกเข้ารหัส ทำให้ปลอดภัยจากการดักฟัง
- การพิสูจน์ตัวตนที่ปลอดภัย: ใช้คู่กุญแจ (key pair) สำหรับการพิสูจน์ตัวตน ทำให้ยากต่อการถูกโจมตีด้วย brute-force
- ความสะดวกในการใช้งาน: สามารถเข้าถึงและจัดการเซิร์ฟเวอร์จากระยะไกลได้ง่าย
การใช้ SSH ช่วยให้การสื่อสารระหว่างเครื่องคอมพิวเตอร์ผ่านเครือข่ายเป็นไปอย่างปลอดภัยและมีประสิทธิภาพ เหมาะสำหรับการจัดการและดูแลเซิร์ฟเวอร์จากระยะไกล