การตั้งค่าและเพิ่มความปลอดภัย SSH บน Ubuntu: คู่มือฉบับสมบูรณ์สำหรับผู้เริ่มต้น

目次

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 และปิดใช้งานการยืนยันตัวตนด้วยรหัสผ่าน

ขั้นตอน

     

  1. แก้ไข sshd_config
   sudo nano /etc/ssh/sshd_config
     

  1. เปลี่ยนการตั้งค่าต่อไปนี้ (หรือเพิ่ม)
   PasswordAuthentication no
   PubkeyAuthentication yes
     

  1. รีสตาร์ทบริการ SSH
   sudo systemctl restart ssh

การตั้งค่านี้จะทำให้ SSH ยอมรับเฉพาะการยืนยันตัวตนด้วย Public Key เท่านั้น โปรดดำเนินการตั้งค่า Public Key ให้เสร็จสิ้นก่อนที่จะใช้การตั้งค่านี้

2. เปลี่ยนหมายเลขพอร์ต SSH

การใช้พอร์ตเริ่มต้นของ SSH (พอร์ต 22) จะทำให้ตกเป็นเป้าหมายของผู้โจมตีได้ง่าย ขอแนะนำให้เปลี่ยนหมายเลขพอร์ตเพื่อเพิ่มความปลอดภัย

ขั้นตอน

     

  1. เปิด sshd_config
   sudo nano /etc/ssh/sshd_config
     

  1. เปลี่ยนดังนี้ (เช่น เปลี่ยนเป็น 2222)
   Port 2222
     

  1. อนุญาตพอร์ตใหม่ในไฟร์วอลล์
   sudo ufw allow 2222/tcp
     

  1. รีสตาร์ทบริการ SSH
   sudo systemctl restart ssh
     

  1. ทดสอบการเชื่อมต่อด้วยพอร์ตใหม่
   ssh -p 2222 ชื่อผู้ใช้@ที่อยู่ IP ของเซิร์ฟเวอร์

3. ห้ามการเข้าสู่ระบบ SSH ด้วย Root User

โดยค่าเริ่มต้น root user สามารถเข้าสู่ระบบ SSH ได้ แต่สิ่งนี้เป็นความเสี่ยงด้านความปลอดภัย ขอแนะนำให้จำกัดการเข้าถึง SSH เฉพาะผู้ใช้ทั่วไป และใช้ sudo เมื่อจำเป็น

ขั้นตอน

     

  1. เปิด sshd_config
   sudo nano /etc/ssh/sshd_config
     

  1. เปลี่ยนบรรทัดต่อไปนี้
   PermitRootLogin no
     

  1. รีสตาร์ทบริการ SSH
   sudo systemctl restart ssh

4. ติดตั้ง Fail2Ban เพื่อป้องกันการโจมตีแบบ Brute-force

Fail2Ban เป็นเครื่องมือที่ตรวจจับความพยายามเข้าสู่ระบบที่ไม่ถูกต้อง และบล็อกที่อยู่ IP โดยอัตโนมัติหากมีความล้มเหลวเกินจำนวนครั้งที่กำหนด

การติดตั้งและการตั้งค่า

     

  1. ติดตั้ง Fail2Ban
   sudo apt install fail2ban -y
     

  1. คัดลอกไฟล์การตั้งค่า
   sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
     

  1. แก้ไข jail.local
   sudo nano /etc/fail2ban/jail.local
     

  1. เปลี่ยนส่วน [sshd]
   [sshd]
   enabled = true
   maxretry = 5
   bantime = 600
   findtime = 600
     

  • maxretry: จำนวนครั้งที่อนุญาตให้เข้าสู่ระบบล้มเหลว
  •  

  • bantime: ระยะเวลาที่บล็อก (วินาที)
  •  

  • findtime: ช่วงเวลาการพิจารณาจำนวนครั้งที่ล้มเหลว (วินาที)
     

  1. รีสตาร์ท Fail2Ban
   sudo systemctl restart fail2ban
     

  1. ตรวจสอบสถานะปัจจุบันของ Fail2Ban
   sudo fail2ban-client status sshd

สรุป

หากต้องการเสริมความปลอดภัยของ SSH ให้ดำเนินการตามมาตรการต่อไปนี้:

ปิดใช้งานการยืนยันตัวตนด้วยรหัสผ่าน และใช้การยืนยันตัวตนด้วย Public Key
เปลี่ยนหมายเลขพอร์ต SSH เพื่อลดความเสี่ยงจากการโจมตี
ห้ามการเข้าสู่ระบบด้วย Root และอนุญาตการเข้าถึงเฉพาะผู้ใช้ที่ระบุ
ติดตั้ง Fail2Ban เพื่อป้องกันการโจมตีแบบ Brute-force

8. คำถามที่พบบ่อย (FAQ)

ในบทนี้จะอธิบายคำถามและปัญหาที่พบบ่อยเมื่อตั้งค่าและใช้งาน SSH โดยละเอียด

Q1: สาเหตุที่แสดง “การเชื่อมต่อถูกปฏิเสธ” เมื่อเชื่อมต่อ SSH?

มีหลายสาเหตุที่การเชื่อมต่อกับ SSH Server ถูกปฏิเสธ

สาเหตุหลักและวิธีแก้ไข

     

  1. บริการ SSH ไม่ได้ทำงาน
   sudo systemctl status ssh

วิธีแก้ไข: หากบริการหยุดทำงาน ให้เริ่มต้น

   sudo systemctl start ssh
     

  1. ไฟร์วอลล์ (UFW) กำลังบล็อกอยู่
   sudo ufw allow ssh
   sudo ufw enable
     

  1. หมายเลขพอร์ตถูกเปลี่ยน
    หากพอร์ต SSH ถูกเปลี่ยนจากค่าเริ่มต้น (22) ให้ระบุพอร์ตที่ถูกต้อง
   ssh -p 2222 ชื่อผู้ใช้@ที่อยู่ IP ของเซิร์ฟเวอร์

Q2: วิธีเปลี่ยนพอร์ตเริ่มต้นของ SSH?

พอร์ตเริ่มต้น 22 มักตกเป็นเป้าหมายของการโจมตี การเปลี่ยนพอร์ตจะช่วยเพิ่มความปลอดภัย

ขั้นตอน

     

  1. แก้ไขไฟล์การตั้งค่า
   sudo nano /etc/ssh/sshd_config
     

  1. เปลี่ยนค่า Port (เช่น: 2222)
   Port 2222
     

  1. อนุญาตพอร์ตใหม่ในไฟร์วอลล์
   sudo ufw allow 2222/tcp
     

  1. รีสตาร์ทบริการ SSH
   sudo systemctl restart ssh

หลังจากเปลี่ยนแล้ว ให้ลองเชื่อมต่อด้วยพอร์ตใหม่

ssh -p 2222 ชื่อผู้ใช้@ที่อยู่ IP ของเซิร์ฟเวอร์

Q3: จุดที่ต้องตรวจสอบหาก Public Key Authentication ไม่ทำงาน?

หากการยืนยันตัวตนด้วย Public Key ของ SSH ไม่ทำงาน ให้ตรวจสอบสิ่งต่อไปนี้:

     

  1. Public Key ถูกวางไว้อย่างเหมาะสมหรือไม่
   ls -l ~/.ssh/authorized_keys

ตรวจสอบว่า authorized_keys มีอยู่และมีคีย์ที่เหมาะสมหรือไม่

     

  1. สิทธิ์ของไฟล์เหมาะสมหรือไม่
   chmod 600 ~/.ssh/authorized_keys
   chmod 700 ~/.ssh
     

  1. การตั้งค่า SSH Server อนุญาตการยืนยันตัวตนด้วย Public Key หรือไม่
   sudo nano /etc/ssh/sshd_config

ตรวจสอบการตั้งค่าต่อไปนี้:

   PubkeyAuthentication yes
   PasswordAuthentication no
     

  1. รีสตาร์ทบริการ SSH
   sudo systemctl restart ssh

Q4: วิธีอนุญาตการเชื่อมต่อ SSH จากที่อยู่ IP ที่ระบุเท่านั้น?

คุณสามารถเพิ่มความปลอดภัยโดยอนุญาต SSH จากที่อยู่ IP ที่ระบุเท่านั้น

วิธีที่ 1: การแก้ไข sshd_config

     

  1. เปิดไฟล์การตั้งค่า
   sudo nano /etc/ssh/sshd_config
     

  1. เพิ่มที่อยู่ IP ที่อนุญาตใน AllowUsers
   AllowUsers ชื่อผู้ใช้@192.168.1.100
     

  1. รีสตาร์ทบริการ SSH
   sudo systemctl restart ssh

วิธีที่ 2: การตั้งค่าไฟร์วอลล์ (UFW)

     

  1. ระบุที่อยู่ IP ที่อนุญาตให้เชื่อมต่อ SSH
   sudo ufw allow from 192.168.1.100 to any port 22
     

  1. บล็อกการเชื่อมต่อ SSH อื่นๆ
   sudo ufw deny 22

Q5: วิธีเปลี่ยนเวลาหมดเวลาการเชื่อมต่อ SSH?

หากเซสชัน SSH ถูกตัดการเชื่อมต่อหลังจากระยะเวลาหนึ่ง คุณสามารถแก้ไขได้โดยการเปลี่ยนการตั้งค่า

การตั้งค่าฝั่งไคลเอนต์

     

  1. เพิ่มสิ่งต่อไปนี้ใน ~/.ssh/config
   Host *
       ServerAliveInterval 60

การตั้งค่าฝั่งเซิร์ฟเวอร์

     

  1. แก้ไข sshd_config
   sudo nano /etc/ssh/sshd_config
     

  1. เพิ่ม/เปลี่ยนสิ่งต่อไปนี้
   ClientAliveInterval 60
   ClientAliveCountMax 3
     

  1. รีสตาร์ทบริการ 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 ให้ลึกซึ้งยิ่งขึ้น โปรดใช้แหล่งข้อมูลต่อไปนี้:

📚 เอกสารทางการ

🛠 เครื่องมือที่เกี่ยวข้อง

🎥 วิดีโอแนะนำ

     

  • ค้นหา “Ubuntu SSH ตั้งค่า” บน YouTube คุณจะพบวิดีโอสอนสำหรับผู้เริ่มต้นจำนวนมาก

作成した動画を友だち、家族、世界中の人たちと共有…

ขั้นตอนถัดไป

เมื่อคุณเข้าใจพื้นฐานของ SSH จากบทความนี้แล้ว ขอแนะนำให้พัฒนาทักษะขั้นสูงต่อไปนี้:

การจัดการ SSH อัตโนมัติด้วย Ansible

     

  • หากคุณมีเซิร์ฟเวอร์หลายเครื่อง คุณสามารถใช้ SSH เพื่อจัดการระยะไกลโดยอัตโนมัติด้วย Ansible ได้

SSH Tunneling และ Port Forwarding

     

  • คุณสามารถใช้ SSH เพื่อสร้างการเชื่อมต่อเดสก์ท็อประยะไกลได้อย่างปลอดภัย หรือใช้เป็น VPN ได้

การตรวจสอบ SSH Log และการเสริมสร้างความปลอดภัย

     

  • เรียนรู้วิธีการใช้ fail2ban และ logwatch เพื่อตรวจสอบการเข้าถึงโดยไม่ได้รับอนุญาตแบบเรียลไทม์

สรุป

ขอบคุณที่อ่านบทความนี้จนจบ! 🎉
ด้วยการตั้งค่า SSH บน Ubuntu อย่างเหมาะสม คุณสามารถเพิ่มประสิทธิภาพและความปลอดภัยของการจัดการระยะไกลได้อย่างมาก

สำหรับหัวข้อที่ลึกซึ้งยิ่งขึ้น เช่น “เทคนิคการใช้งาน SSH ที่สะดวกสบาย” และ “การเสริมสร้างความปลอดภัยของเซิร์ฟเวอร์เพิ่มเติม” โปรดใช้เป็นประโยชน์ในการเรียนรู้ต่อไปของคุณ!

ขอให้คุณมีชีวิต SSH ที่สะดวกสบาย! 🖥️🔐