- 1 1. บทนำ
- 2 2. แนวคิดพื้นฐานของ SSH
- 3 3. การติดตั้ง SSH Server บน Ubuntu
- 4 4. การตั้งค่าการเชื่อมต่อ SSH
- 5 5. การดำเนินการเชื่อมต่อ SSH
- 6 6. การแก้ไขปัญหาการเชื่อมต่อ SSH
- 7 7. การเสริมสร้างความปลอดภัย SSH
- 8 8. คำถามที่พบบ่อย (FAQ)
- 9 9. สรุป
1. บทนำ
การใช้ SSH บน Ubuntu ช่วยให้คุณสามารถเข้าถึงและจัดการเซิร์ฟเวอร์หรือพีซีจากระยะไกลได้อย่างปลอดภัย บทความนี้จะอธิบายตั้งแต่ภาพรวมของ SSH ไปจนถึงการติดตั้งเซิร์ฟเวอร์ SSH บน Ubuntu มาตรการรักษาความปลอดภัย และการแก้ไขปัญหา โดยละเอียดเพื่อให้แม้แต่ผู้เริ่มต้นก็สามารถเข้าใจได้
SSH คืออะไร?
SSH (Secure Shell) คือโปรโตคอลสำหรับการเชื่อมต่อกับคอมพิวเตอร์ระยะไกลผ่านเครือข่ายอย่างปลอดภัย แตกต่างจาก Telnet หรือ FTP แบบเดิมตรงที่ข้อมูลจะถูกเข้ารหัส ทำให้ลดความเสี่ยงจากการดักฟังหรือการแก้ไขข้อมูลได้อย่างมาก
การใช้งาน SSH หลักๆ ใน Ubuntu
สถานการณ์หลักในการใช้ SSH บน Ubuntu มีดังต่อไปนี้:
- การจัดการเซิร์ฟเวอร์ระยะไกล: ควบคุมเซิร์ฟเวอร์ Ubuntu จากที่ห่างไกล
- การถ่ายโอนไฟล์: การแลกเปลี่ยนไฟล์อย่างปลอดภัยโดยใช้ SCP หรือ SFTP
- การส่งต่อพอร์ต (Port Forwarding): การเชื่อมต่อระยะไกลที่เพิ่มความปลอดภัย
สิ่งที่คุณจะได้เรียนรู้จากบทความนี้
- แนวคิดพื้นฐานและกลไกการทำงานของ SSH
- วิธีการติดตั้งเซิร์ฟเวอร์ SSH บน Ubuntu
- การตั้งค่าและการแก้ไขปัญหาการเชื่อมต่อ SSH
- มาตรการรักษาความปลอดภัยสำหรับ SSH
2. แนวคิดพื้นฐานของ SSH
เพื่อให้สามารถใช้ SSH ได้อย่างมีประสิทธิภาพ การทำความเข้าใจแนวคิดพื้นฐานเป็นสิ่งสำคัญ ในบทนี้จะอธิบายเกี่ยวกับกลไกการทำงานของ SSH และความแตกต่างของวิธีการยืนยันตัวตน
กลไกการทำงานของ SSH
SSH เป็นโปรโตคอลที่สร้างการเชื่อมต่อที่ปลอดภัยระหว่างไคลเอนต์และเซิร์ฟเวอร์ โดยค่าเริ่มต้นจะใช้พอร์ต TCP หมายเลข 22 และทำการสื่อสารแบบเข้ารหัส
ฟังก์ชันหลัก
- การเข้าสู่ระบบระยะไกล: การรันคำสั่งบนเซิร์ฟเวอร์
- การถ่ายโอนไฟล์: การส่งข้อมูลอย่างปลอดภัยด้วย SCP หรือ SFTP
- การส่งต่อพอร์ต (Port Forwarding): การเชื่อมต่อกับบริการอื่นผ่าน SSH
วิธีการยืนยันตัวตนของ SSH
SSH มีวิธีการยืนยันตัวตนหลักๆ 2 วิธีดังนี้:
การยืนยันตัวตนด้วยรหัสผ่าน
- เข้าสู่ระบบโดยป้อนชื่อผู้ใช้และรหัสผ่าน
- ง่าย แต่มีความเสี่ยงต่อการโจมตีแบบ Brute-force
การยืนยันตัวตนด้วย Public Key (คีย์สาธารณะ)
- วิธีการยืนยันตัวตนโดยใช้ Public Key และ Private Key
- มีความปลอดภัยสูงและเป็นวิธีการยืนยันตัวตนที่แนะนำ
ข้อดีของ SSH
- การเข้ารหัสข้อมูล: เนื้อหาการสื่อสารได้รับการป้องกัน
- ง่ายต่อการจัดการระยะไกล: สามารถเข้าถึงได้จากทุกที่
- เพิ่มความปลอดภัย: ป้องกันการเข้าถึงโดยไม่ได้รับอนุญาตได้ง่ายขึ้น
3. การติดตั้ง SSH Server บน Ubuntu
ในการใช้ SSH บน Ubuntu คุณต้องติดตั้ง OpenSSH Server ที่นี่จะอธิบายขั้นตอนการติดตั้งและการตั้งค่าพื้นฐาน
การติดตั้ง OpenSSH Server
บน Ubuntu คุณสามารถติดตั้ง OpenSSH Server ได้ด้วยคำสั่งต่อไปนี้:
sudo apt update
sudo apt install openssh-server
เมื่อการติดตั้งเสร็จสิ้น ให้ตรวจสอบว่าบริการ SSH กำลังทำงานอยู่หรือไม่
sudo systemctl status ssh
การเริ่มต้นและการตรวจสอบสถานะบริการ SSH
หากต้องการเริ่มต้น/หยุดบริการ SSH ด้วยตนเอง ให้ใช้คำสั่งต่อไปนี้:
# เริ่ม SSH
sudo systemctl start ssh
# เปิดใช้งาน SSH (เริ่มต้นอัตโนมัติหลังรีบูต)
sudo systemctl enable ssh
# หยุด SSH
sudo systemctl stop ssh
การตั้งค่า UFW (Uncomplicated Firewall)
โดยค่าเริ่มต้น หาก UFW เปิดใช้งานอยู่ การเชื่อมต่อ SSH อาจถูกบล็อกได้ อนุญาตพอร์ต SSH (พอร์ต 22) ด้วยคำสั่งต่อไปนี้:
sudo ufw allow ssh
sudo ufw enable
4. การตั้งค่าการเชื่อมต่อ SSH
การตั้งค่าที่เหมาะสมเป็นสิ่งจำเป็นสำหรับการใช้ SSH อย่างปลอดภัย ในบทนี้จะอธิบายวิธีการตั้งค่าการยืนยันตัวตนด้วย Public Key
การสร้างคู่คีย์
บนฝั่งไคลเอนต์ ให้รันคำสั่งต่อไปนี้เพื่อสร้างคู่ Public Key และ Private Key:
ssh-keygen -t rsa -b 4096
โดยค่าเริ่มต้น Private Key จะถูกบันทึกไว้ที่ ~/.ssh/id_rsa
และ Public Key ที่ ~/.ssh/id_rsa.pub
การวาง Public Key บนเซิร์ฟเวอร์
ถ่ายโอน Public Key ที่สร้างขึ้นไปยังเซิร์ฟเวอร์ SSH
ssh-copy-id ชื่อผู้ใช้@ที่อยู่ IP ของเซิร์ฟเวอร์
หรือหากคัดลอกด้วยตนเอง:
scp ~/.ssh/id_rsa.pub ชื่อผู้ใช้@ที่อยู่ IP ของเซิร์ฟเวอร์:~/
บนฝั่งเซิร์ฟเวอร์ ให้รันคำสั่งต่อไปนี้เพื่อวาง Public Key ในไดเรกทอรีที่เหมาะสม:
mkdir -p ~/.ssh
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
rm ~/id_rsa.pub
การแก้ไข sshd_config
เปิดไฟล์การตั้งค่า SSH และเพิ่มความปลอดภัย
sudo nano /etc/ssh/sshd_config
ตรวจสอบและแก้ไขรายการต่อไปนี้:
# ปิดใช้งานการยืนยันตัวตนด้วยรหัสผ่าน (ใช้ Public Key เท่านั้น)
PasswordAuthentication no
# ห้ามเข้าสู่ระบบด้วย Root
PermitRootLogin no
# เปลี่ยนพอร์ตที่ใช้ (เช่น: 2222)
Port 2222
หลังจากเปลี่ยนการตั้งค่า ให้รีสตาร์ทบริการ SSH
sudo systemctl restart ssh
5. การดำเนินการเชื่อมต่อ SSH
หลังจากตั้งค่า SSH Server บน Ubuntu แล้ว คุณจะต้องเชื่อมต่อจากไคลเอนต์จริง ๆ ในบทนี้จะอธิบายวิธีการเชื่อมต่อ SSH พื้นฐาน และวิธีการเชื่อมต่อเมื่อมีการเปลี่ยนพอร์ต
คำสั่งการเชื่อมต่อ SSH พื้นฐาน
หากต้องการเชื่อมต่อกับเซิร์ฟเวอร์จากไคลเอนต์ SSH ให้ใช้คำสั่งต่อไปนี้:
ssh ชื่อผู้ใช้@ที่อยู่ IP ของเซิร์ฟเวอร์
ตัวอย่างเช่น หากที่อยู่ IP ของเซิร์ฟเวอร์คือ 192.168.1.10
และชื่อผู้ใช้คือ ubuntu
ให้ป้อนดังนี้:
ssh ubuntu@192.168.1.10
ในการเชื่อมต่อครั้งแรก ลายนิ้วมือของเซิร์ฟเวอร์จะปรากฏขึ้น ให้ป้อน “yes” เพื่อยอมรับการเชื่อมต่อ
การเชื่อมต่อเมื่อเปลี่ยนหมายเลขพอร์ต
หากเปลี่ยนจากพอร์ตเริ่มต้น 22 เป็นพอร์ตอื่น เช่น “2222” ให้ระบุด้วยตัวเลือก -p
ดังนี้:
ssh -p 2222 ubuntu@192.168.1.10
การเชื่อมต่อโดยระบุ Private Key
หากคุณตั้งค่าการยืนยันตัวตนด้วย Public Key คุณสามารถระบุ Private Key โดยใช้ตัวเลือก -i
ดังนี้:
ssh -i ~/.ssh/id_rsa ubuntu@192.168.1.10
การรันคำสั่งระยะไกลผ่าน SSH
คุณสามารถรันคำสั่งโดยตรงบนเซิร์ฟเวอร์ระยะไกลได้โดยไม่ต้องเข้าสู่ระบบ
ssh ubuntu@192.168.1.10 "ls -lah /home/ubuntu"
วิธีนี้ช่วยให้คุณสามารถทำให้สคริปต์เป็นแบบอัตโนมัติและดำเนินการควบคุมระยะไกลได้อย่างมีประสิทธิภาพ
การถ่ายโอนไฟล์ด้วย SCP
คุณสามารถถ่ายโอนไฟล์ระหว่างพีซีในเครื่องและเซิร์ฟเวอร์ระยะไกลได้โดยใช้ SSH
จากเครื่องใน → ไปยังเครื่องระยะไกล
scp ชื่อไฟล์ ชื่อผู้ใช้@ที่อยู่ IP ของเซิร์ฟเวอร์:ไดเรกทอรีระยะไกล
ตัวอย่าง:
scp myfile.txt ubuntu@192.168.1.10:/home/ubuntu/
จากเครื่องระยะไกล → ไปยังเครื่องใน
scp ชื่อผู้ใช้@ที่อยู่ IP ของเซิร์ฟเวอร์:ชื่อไฟล์ระยะไกล ไดเรกทอรีในเครื่อง
ตัวอย่าง:
scp ubuntu@192.168.1.10:/home/ubuntu/myfile.txt ./
การจัดการไฟล์ด้วย SFTP
คุณยังสามารถจัดการไฟล์โดยใช้ SFTP
sftp ubuntu@192.168.1.10
หลังจากเชื่อมต่อ คุณสามารถใช้คำสั่งต่อไปนี้:
ls # รายการไฟล์
cd # ย้ายไดเรกทอรี
put ชื่อไฟล์ # อัปโหลดจากเครื่องในไปยังเครื่องระยะไกล
get ชื่อไฟล์ # ดาวน์โหลดจากเครื่องระยะไกลไปยังเครื่องใน
exit # สิ้นสุดการเชื่อมต่อ
6. การแก้ไขปัญหาการเชื่อมต่อ SSH
ไม่ใช่เรื่องแปลกที่ปัญหาจะเกิดขึ้นเมื่อเชื่อมต่อ SSH ในที่นี้จะอธิบายปัญหาที่พบบ่อยและวิธีแก้ไข
สาเหตุทั่วไปและวิธีแก้ไขข้อผิดพลาดการเชื่อมต่อ SSH
หากการเชื่อมต่อ SSH ไม่สำเร็จ อาจเกิดจากสาเหตุต่อไปนี้:
1. SSH Server ไม่ได้ทำงาน
ตรวจสอบว่า SSH Server กำลังทำงานอย่างถูกต้องหรือไม่
sudo systemctl status ssh
วิธีแก้ไข:
- หาก SSH Server หยุดทำงาน ให้เริ่มต้นด้วยคำสั่งต่อไปนี้:
sudo systemctl start ssh
- หากต้องการให้ SSH เริ่มต้นอัตโนมัติเมื่อรีบูตเซิร์ฟเวอร์ ให้รันคำสั่งต่อไปนี้:
sudo systemctl enable ssh
2. ไฟร์วอลล์ (UFW) กำลังบล็อกการเชื่อมต่อ SSH
หาก UFW (Uncomplicated Firewall) เปิดใช้งานอยู่ SSH อาจถูกบล็อก
วิธีแก้ไข:
- ตรวจสอบการตั้งค่า UFW ปัจจุบัน
sudo ufw status
- อนุญาต SSH
sudo ufw allow ssh
(หากเปลี่ยนพอร์ต ให้รัน sudo ufw allow <หมายเลขพอร์ต>
)
- รีสตาร์ท UFW
sudo ufw reload
3. หมายเลขพอร์ตถูกเปลี่ยน
หากคุณใช้พอร์ตที่กำหนดเองแทนพอร์ตเริ่มต้น 22
คุณจะต้องระบุพอร์ตที่ถูกต้องเมื่อเชื่อมต่อ
วิธีแก้ไข:
- ตรวจสอบพอร์ตที่ใช้บนฝั่งเซิร์ฟเวอร์
sudo grep Port /etc/ssh/sshd_config
- เชื่อมต่อจากฝั่งไคลเอนต์โดยระบุพอร์ตที่เหมาะสม
ssh -p 2222 ชื่อผู้ใช้@ที่อยู่ IP ของเซิร์ฟเวอร์
4. สิทธิ์ของคีย์ SSH ไม่ถูกต้อง
หากใช้การยืนยันตัวตนด้วย Public Key จะไม่สามารถเชื่อมต่อได้หากสิทธิ์ของไฟล์คีย์ไม่เหมาะสม
วิธีแก้ไข:
- ตั้งค่าสิทธิ์ของ Private Key อย่างเหมาะสม
chmod 600 ~/.ssh/id_rsa
- ตั้งค่าสิทธิ์ของ Public Key อย่างเหมาะสม
chmod 644 ~/.ssh/authorized_keys
5. Host Key ไม่ตรงกัน
หาก Host Key ของเซิร์ฟเวอร์ SSH เปลี่ยนไป ข้อผิดพลาด “WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!” อาจเกิดขึ้นบนฝั่งไคลเอนต์
วิธีแก้ไข:
- ลบ Host Key เก่า
ssh-keygen -R <ที่อยู่ IP ของเซิร์ฟเวอร์>
- ลองเชื่อมต่อ SSH อีกครั้ง
ssh ชื่อผู้ใช้@ที่อยู่ IP ของเซิร์ฟเวอร์
6. การตรวจสอบ SSH Log
หากต้องการตรวจสอบข้อความแสดงข้อผิดพลาด SSH โดยละเอียด ให้ตรวจสอบ Log บนฝั่งเซิร์ฟเวอร์
sudo journalctl -u ssh --no-pager | tail -n 20
นอกจากนี้ หากต้องการตรวจสอบ Log แบบเรียลไทม์ ให้รันคำสั่งต่อไปนี้:
sudo tail -f /var/log/auth.log
7. การเชื่อมต่อหมดเวลา (Timeout)
หากการเชื่อมต่อ SSH ช้า หรือขาดการเชื่อมต่อระหว่างทาง ให้ตรวจสอบประเด็นต่อไปนี้:
วิธีแก้ไข:
- เปิดใช้งาน KeepAlive
เพิ่มสิ่งต่อไปนี้ใน~/.ssh/config
ของไคลเอนต์
Host *
ServerAliveInterval 60
- ปรับการตั้งค่า Timeout บนฝั่งเซิร์ฟเวอร์
เพิ่มสิ่งต่อไปนี้ใน/etc/ssh/sshd_config
และรีสตาร์ทบริการ SSH
ClientAliveInterval 60
ClientAliveCountMax 3
sudo systemctl restart ssh
สรุป
ปัญหาการเชื่อมต่อ SSH อาจเกิดจากสาเหตุหลายประการ แต่ส่วนใหญ่สามารถแก้ไขได้ด้วยการตรวจสอบจุดต่อไปนี้:
✅ ตรวจสอบว่าบริการ SSH กำลังทำงานอยู่หรือไม่
✅ ตรวจสอบว่าไฟร์วอลล์ไม่ได้บล็อกอยู่หรือไม่
✅ ตรวจสอบว่าการตั้งค่าพอร์ตถูกต้องหรือไม่
✅ ตรวจสอบว่าสิทธิ์ของคีย์ SSH เหมาะสมหรือไม่
✅ ตรวจสอบข้อความแสดงข้อผิดพลาดใน Log

7. การเสริมสร้างความปลอดภัย SSH
SSH เป็นเครื่องมือการเข้าถึงระยะไกลที่ทรงพลัง แต่หากไม่มีมาตรการรักษาความปลอดภัยที่เหมาะสม อาจตกเป็นเป้าหมายของการเข้าถึงโดยไม่ได้รับอนุญาตหรือการโจมตีแบบ Brute-force ในบทนี้จะอธิบายการตั้งค่าที่แนะนำเพื่อเพิ่มความปลอดภัยของ SSH
1. ปิดใช้งานการยืนยันตัวตนด้วยรหัสผ่านและแนะนำการยืนยันตัวตนด้วย Public Key
โดยค่าเริ่มต้น SSH อนุญาตการยืนยันตัวตนด้วยรหัสผ่าน ซึ่งเพิ่มความเสี่ยงของการโจมตีแบบ Brute-force คุณสามารถเสริมความปลอดภัยได้โดยการเปิดใช้งานการยืนยันตัวตนด้วย Public Key ของ SSH และปิดใช้งานการยืนยันตัวตนด้วยรหัสผ่าน
ขั้นตอน
- แก้ไข
sshd_config
sudo nano /etc/ssh/sshd_config
- เปลี่ยนการตั้งค่าต่อไปนี้ (หรือเพิ่ม)
PasswordAuthentication no
PubkeyAuthentication yes
- รีสตาร์ทบริการ SSH
sudo systemctl restart ssh
การตั้งค่านี้จะทำให้ SSH ยอมรับเฉพาะการยืนยันตัวตนด้วย Public Key เท่านั้น โปรดดำเนินการตั้งค่า Public Key ให้เสร็จสิ้นก่อนที่จะใช้การตั้งค่านี้
2. เปลี่ยนหมายเลขพอร์ต SSH
การใช้พอร์ตเริ่มต้นของ SSH (พอร์ต 22) จะทำให้ตกเป็นเป้าหมายของผู้โจมตีได้ง่าย ขอแนะนำให้เปลี่ยนหมายเลขพอร์ตเพื่อเพิ่มความปลอดภัย
ขั้นตอน
- เปิด
sshd_config
sudo nano /etc/ssh/sshd_config
- เปลี่ยนดังนี้ (เช่น เปลี่ยนเป็น 2222)
Port 2222
- อนุญาตพอร์ตใหม่ในไฟร์วอลล์
sudo ufw allow 2222/tcp
- รีสตาร์ทบริการ SSH
sudo systemctl restart ssh
- ทดสอบการเชื่อมต่อด้วยพอร์ตใหม่
ssh -p 2222 ชื่อผู้ใช้@ที่อยู่ IP ของเซิร์ฟเวอร์
3. ห้ามการเข้าสู่ระบบ SSH ด้วย Root User
โดยค่าเริ่มต้น root user สามารถเข้าสู่ระบบ SSH ได้ แต่สิ่งนี้เป็นความเสี่ยงด้านความปลอดภัย ขอแนะนำให้จำกัดการเข้าถึง SSH เฉพาะผู้ใช้ทั่วไป และใช้ sudo
เมื่อจำเป็น
ขั้นตอน
- เปิด
sshd_config
sudo nano /etc/ssh/sshd_config
- เปลี่ยนบรรทัดต่อไปนี้
PermitRootLogin no
- รีสตาร์ทบริการ SSH
sudo systemctl restart ssh
4. ติดตั้ง Fail2Ban เพื่อป้องกันการโจมตีแบบ Brute-force
Fail2Ban เป็นเครื่องมือที่ตรวจจับความพยายามเข้าสู่ระบบที่ไม่ถูกต้อง และบล็อกที่อยู่ IP โดยอัตโนมัติหากมีความล้มเหลวเกินจำนวนครั้งที่กำหนด
การติดตั้งและการตั้งค่า
- ติดตั้ง Fail2Ban
sudo apt install fail2ban -y
- คัดลอกไฟล์การตั้งค่า
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
- แก้ไข
jail.local
sudo nano /etc/fail2ban/jail.local
- เปลี่ยนส่วน
[sshd]
[sshd]
enabled = true
maxretry = 5
bantime = 600
findtime = 600
maxretry
: จำนวนครั้งที่อนุญาตให้เข้าสู่ระบบล้มเหลวbantime
: ระยะเวลาที่บล็อก (วินาที)findtime
: ช่วงเวลาการพิจารณาจำนวนครั้งที่ล้มเหลว (วินาที)
- รีสตาร์ท Fail2Ban
sudo systemctl restart fail2ban
- ตรวจสอบสถานะปัจจุบันของ Fail2Ban
sudo fail2ban-client status sshd
สรุป
หากต้องการเสริมความปลอดภัยของ SSH ให้ดำเนินการตามมาตรการต่อไปนี้:
✅ ปิดใช้งานการยืนยันตัวตนด้วยรหัสผ่าน และใช้การยืนยันตัวตนด้วย Public Key
✅ เปลี่ยนหมายเลขพอร์ต SSH เพื่อลดความเสี่ยงจากการโจมตี
✅ ห้ามการเข้าสู่ระบบด้วย Root และอนุญาตการเข้าถึงเฉพาะผู้ใช้ที่ระบุ
✅ ติดตั้ง Fail2Ban เพื่อป้องกันการโจมตีแบบ Brute-force
8. คำถามที่พบบ่อย (FAQ)
ในบทนี้จะอธิบายคำถามและปัญหาที่พบบ่อยเมื่อตั้งค่าและใช้งาน SSH โดยละเอียด
Q1: สาเหตุที่แสดง “การเชื่อมต่อถูกปฏิเสธ” เมื่อเชื่อมต่อ SSH?
มีหลายสาเหตุที่การเชื่อมต่อกับ SSH Server ถูกปฏิเสธ
สาเหตุหลักและวิธีแก้ไข
- บริการ SSH ไม่ได้ทำงาน
sudo systemctl status ssh
วิธีแก้ไข: หากบริการหยุดทำงาน ให้เริ่มต้น
sudo systemctl start ssh
- ไฟร์วอลล์ (UFW) กำลังบล็อกอยู่
sudo ufw allow ssh
sudo ufw enable
- หมายเลขพอร์ตถูกเปลี่ยน
หากพอร์ต SSH ถูกเปลี่ยนจากค่าเริ่มต้น (22) ให้ระบุพอร์ตที่ถูกต้อง
ssh -p 2222 ชื่อผู้ใช้@ที่อยู่ IP ของเซิร์ฟเวอร์
Q2: วิธีเปลี่ยนพอร์ตเริ่มต้นของ SSH?
พอร์ตเริ่มต้น 22 มักตกเป็นเป้าหมายของการโจมตี การเปลี่ยนพอร์ตจะช่วยเพิ่มความปลอดภัย
ขั้นตอน
- แก้ไขไฟล์การตั้งค่า
sudo nano /etc/ssh/sshd_config
- เปลี่ยนค่า
Port
(เช่น: 2222)
Port 2222
- อนุญาตพอร์ตใหม่ในไฟร์วอลล์
sudo ufw allow 2222/tcp
- รีสตาร์ทบริการ SSH
sudo systemctl restart ssh
หลังจากเปลี่ยนแล้ว ให้ลองเชื่อมต่อด้วยพอร์ตใหม่
ssh -p 2222 ชื่อผู้ใช้@ที่อยู่ IP ของเซิร์ฟเวอร์
Q3: จุดที่ต้องตรวจสอบหาก Public Key Authentication ไม่ทำงาน?
หากการยืนยันตัวตนด้วย Public Key ของ SSH ไม่ทำงาน ให้ตรวจสอบสิ่งต่อไปนี้:
- Public Key ถูกวางไว้อย่างเหมาะสมหรือไม่
ls -l ~/.ssh/authorized_keys
ตรวจสอบว่า authorized_keys
มีอยู่และมีคีย์ที่เหมาะสมหรือไม่
- สิทธิ์ของไฟล์เหมาะสมหรือไม่
chmod 600 ~/.ssh/authorized_keys
chmod 700 ~/.ssh
- การตั้งค่า SSH Server อนุญาตการยืนยันตัวตนด้วย Public Key หรือไม่
sudo nano /etc/ssh/sshd_config
ตรวจสอบการตั้งค่าต่อไปนี้:
PubkeyAuthentication yes
PasswordAuthentication no
- รีสตาร์ทบริการ SSH
sudo systemctl restart ssh
Q4: วิธีอนุญาตการเชื่อมต่อ SSH จากที่อยู่ IP ที่ระบุเท่านั้น?
คุณสามารถเพิ่มความปลอดภัยโดยอนุญาต SSH จากที่อยู่ IP ที่ระบุเท่านั้น
วิธีที่ 1: การแก้ไข sshd_config
- เปิดไฟล์การตั้งค่า
sudo nano /etc/ssh/sshd_config
- เพิ่มที่อยู่ IP ที่อนุญาตใน
AllowUsers
AllowUsers ชื่อผู้ใช้@192.168.1.100
- รีสตาร์ทบริการ SSH
sudo systemctl restart ssh
วิธีที่ 2: การตั้งค่าไฟร์วอลล์ (UFW)
- ระบุที่อยู่ IP ที่อนุญาตให้เชื่อมต่อ SSH
sudo ufw allow from 192.168.1.100 to any port 22
- บล็อกการเชื่อมต่อ SSH อื่นๆ
sudo ufw deny 22
Q5: วิธีเปลี่ยนเวลาหมดเวลาการเชื่อมต่อ SSH?
หากเซสชัน SSH ถูกตัดการเชื่อมต่อหลังจากระยะเวลาหนึ่ง คุณสามารถแก้ไขได้โดยการเปลี่ยนการตั้งค่า
การตั้งค่าฝั่งไคลเอนต์
- เพิ่มสิ่งต่อไปนี้ใน
~/.ssh/config
Host *
ServerAliveInterval 60
การตั้งค่าฝั่งเซิร์ฟเวอร์
- แก้ไข
sshd_config
sudo nano /etc/ssh/sshd_config
- เพิ่ม/เปลี่ยนสิ่งต่อไปนี้
ClientAliveInterval 60
ClientAliveCountMax 3
- รีสตาร์ทบริการ SSH
sudo systemctl restart ssh
สรุป
ในบทนี้ได้นำเสนอคำถามที่พบบ่อยเกี่ยวกับ SSH และวิธีแก้ไข เมื่อเกิดปัญหา การตรวจสอบ Log เพื่อหาสาเหตุเป็นสิ่งสำคัญ
✅ วิธีแก้ไขเมื่อการเชื่อมต่อ SSH ถูกปฏิเสธ
✅ การเปลี่ยนพอร์ตเริ่มต้นและวิธีการเชื่อมต่อที่เหมาะสม
✅ รายการตรวจสอบเมื่อ Public Key Authentication ไม่ทำงาน
✅ วิธีอนุญาตการเชื่อมต่อ SSH เฉพาะจากที่อยู่ IP ที่ระบุ
✅ การตั้งค่าเพื่อป้องกัน SSH หมดเวลา
9. สรุป
ในบทความนี้ ได้อธิบายวิธีการตั้งค่าและใช้งาน SSH บน Ubuntu ตั้งแต่พื้นฐานไปจนถึงขั้นสูง โดยจะทบทวนประเด็นสำคัญและแนะนำแหล่งข้อมูลเพิ่มเติมสำหรับการเรียนรู้
สรุปประเด็นสำคัญของบทความนี้
1. พื้นฐานและกลไกการทำงานของ SSH
- SSH คือโปรโตคอลสำหรับการเชื่อมต่อระยะไกลอย่างปลอดภัย
- ข้อมูลถูกเข้ารหัส จึงปลอดภัยกว่า Telnet หรือ FTP
- มีวิธีการยืนยันตัวตนแบบ Password Authentication และ Public Key Authentication
2. การติดตั้ง SSH Server บน Ubuntu
- ติดตั้ง OpenSSH ด้วย
sudo apt install openssh-server
- ตรวจสอบสถานะบริการด้วย
systemctl status ssh
- อนุญาตการเข้าถึงด้วย UFW (ไฟร์วอลล์) โดยรัน
sudo ufw allow ssh
3. การตั้งค่าการเชื่อมต่อ SSH
- เชื่อมต่อระยะไกลด้วย
ssh ชื่อผู้ใช้@ที่อยู่ IP ของเซิร์ฟเวอร์
- การใช้ Public Key Authentication ช่วยเพิ่มความปลอดภัย
- สามารถปิดใช้งาน Password Authentication ได้ในการตั้งค่า
sshd_config
4. การแก้ไขปัญหา SSH
- ตรวจสอบว่าบริการกำลังทำงานอยู่หรือไม่ (
systemctl status ssh
) - เมื่อเปลี่ยนหมายเลขพอร์ต ให้เชื่อมต่อด้วย
ssh -p 2222 ชื่อผู้ใช้@IP
- ปรับสิทธิ์ของ
~/.ssh/authorized_keys
อย่างเหมาะสม
5. การเสริมสร้างความปลอดภัย SSH
- ปิดใช้งานการยืนยันตัวตนด้วยรหัสผ่าน และใช้ Public Key Authentication
- เปลี่ยนหมายเลขพอร์ต SSH (เช่น:
2222
) - ติดตั้ง Fail2Ban เพื่อป้องกันการโจมตีแบบ Brute-force
- อนุญาตเฉพาะที่อยู่ IP ที่ระบุ เพื่อจำกัดการเข้าถึงโดยไม่ได้รับอนุญาต
6. คำถามหลักที่แก้ไขได้ใน FAQ
- “การเชื่อมต่อ SSH ถูกปฏิเสธ” → ตรวจสอบสถานะการทำงานของเซิร์ฟเวอร์และการตั้งค่า UFW
- “Public Key Authentication ไม่ทำงาน” → ตรวจสอบสิทธิ์ของคีย์และ
sshd_config
- “ป้องกัน SSH หมดเวลา” → เปลี่ยนการตั้งค่า
ClientAliveInterval
แหล่งข้อมูลเพิ่มเติมสำหรับการเรียนรู้
หากต้องการทำความเข้าใจการตั้งค่า SSH ให้ลึกซึ้งยิ่งขึ้น โปรดใช้แหล่งข้อมูลต่อไปนี้:
📚 เอกสารทางการ
🛠 เครื่องมือที่เกี่ยวข้อง
- PuTTY (สำหรับใช้ SSH บน Windows)
- ดาวน์โหลด PuTTY
- MobaXterm (ไคลเอนต์ SSH ที่มีประสิทธิภาพสูง)
- เว็บไซต์ทางการของ MobaXterm
🎥 วิดีโอแนะนำ
- ค้นหา “Ubuntu SSH ตั้งค่า” บน YouTube คุณจะพบวิดีโอสอนสำหรับผู้เริ่มต้นจำนวนมาก
作成した動画を友だち、家族、世界中の人たちと共有…
ขั้นตอนถัดไป
เมื่อคุณเข้าใจพื้นฐานของ SSH จากบทความนี้แล้ว ขอแนะนำให้พัฒนาทักษะขั้นสูงต่อไปนี้:
✅ การจัดการ SSH อัตโนมัติด้วย Ansible
- หากคุณมีเซิร์ฟเวอร์หลายเครื่อง คุณสามารถใช้ SSH เพื่อจัดการระยะไกลโดยอัตโนมัติด้วย Ansible ได้
✅ SSH Tunneling และ Port Forwarding
- คุณสามารถใช้ SSH เพื่อสร้างการเชื่อมต่อเดสก์ท็อประยะไกลได้อย่างปลอดภัย หรือใช้เป็น VPN ได้
✅ การตรวจสอบ SSH Log และการเสริมสร้างความปลอดภัย
- เรียนรู้วิธีการใช้
fail2ban
และlogwatch
เพื่อตรวจสอบการเข้าถึงโดยไม่ได้รับอนุญาตแบบเรียลไทม์
สรุป
ขอบคุณที่อ่านบทความนี้จนจบ! 🎉
ด้วยการตั้งค่า SSH บน Ubuntu อย่างเหมาะสม คุณสามารถเพิ่มประสิทธิภาพและความปลอดภัยของการจัดการระยะไกลได้อย่างมาก
สำหรับหัวข้อที่ลึกซึ้งยิ่งขึ้น เช่น “เทคนิคการใช้งาน SSH ที่สะดวกสบาย” และ “การเสริมสร้างความปลอดภัยของเซิร์ฟเวอร์เพิ่มเติม” โปรดใช้เป็นประโยชน์ในการเรียนรู้ต่อไปของคุณ!
ขอให้คุณมีชีวิต SSH ที่สะดวกสบาย! 🖥️🔐