การตั้งค่า SSH บน Ubuntu: คู่มือฉบับสมบูรณ์สำหรับมือใหม่และแอดมินเซิร์ฟเวอร์

目次

1. บทนำ

การตั้งค่า SSH บน Ubuntu เป็นสิ่งสำคัญอย่างยิ่งสำหรับการจัดการเซิร์ฟเวอร์ระยะไกล SSH (Secure Shell) เป็นโปรโตคอลที่ให้การสื่อสารแบบเข้ารหัสอย่างปลอดภัย ใช้กันอย่างแพร่หลายสำหรับการเข้าถึงเซิร์ฟเวอร์จากระยะไกล การรันคำสั่ง และการโอนย้ายไฟล์

บทความนี้จะอธิบายวิธีตั้งค่า SSH บน Ubuntu อย่างละเอียด ตั้งแต่ขั้นตอนการติดตั้งพื้นฐานไปจนถึงมาตรการรักษาความปลอดภัยขั้นสูง

1.1 เหตุผลที่ควรตั้งค่า SSH บน Ubuntu

1.1.1 SSH คืออะไร?

SSH (Secure Shell) คือโปรโตคอลที่ใช้สำหรับการสื่อสารที่ปลอดภัยผ่านเครือข่าย โดยทั่วไป SSH ใช้สำหรับการเข้าสู่ระบบระยะไกล การโอนย้ายไฟล์ และการทำ tunneling (port forwarding) ข้อดีของ SSH คือข้อมูลจะถูกเข้ารหัส ต่างจาก Telnet หรือ FTP แบบเก่า จึงมีความปลอดภัยสูง

1.1.2 กรณีที่จำเป็นต้องใช้ SSH บน Ubuntu

สถานการณ์ที่ต้องจัดการ Ubuntu จากระยะไกล ได้แก่

  • การจัดการเซิร์ฟเวอร์คลาวด์: บริการคลาวด์เช่น AWS, GCP, Vultr นิยมเชื่อมต่อเซิร์ฟเวอร์ระยะไกลผ่าน SSH
  • การควบคุมจากระยะไกลในเครือข่าย LAN: เข้าถึงเซิร์ฟเวอร์หรือเครื่องพัฒนาในองค์กรเพื่อทำงานจากระยะไกลผ่าน SSH
  • การจัดการอุปกรณ์ IoT: ควบคุมอุปกรณ์ embedded เช่น Raspberry Pi จากระยะไกล

ค่าเริ่มต้นของ Ubuntu จะปิดการใช้งาน SSH server ดังนั้นจึงต้องติดตั้งและตั้งค่าด้วยตนเองก่อนใช้งาน

2. การตั้งค่า SSH เบื้องต้น

ในการใช้งาน SSH บน Ubuntu ต้องติดตั้ง SSH server (OpenSSH) และตั้งค่าต่างๆ ให้เหมาะสม ในส่วนนี้จะอธิบายวิธีติดตั้ง การตั้งค่าพื้นฐาน การกำหนด firewall และวิธีเชื่อมต่อโดยละเอียด

2.1 การติดตั้งและเริ่มใช้งาน OpenSSH

2.1.1 OpenSSH คืออะไร?

OpenSSH (Open Secure Shell) เป็นซอฟต์แวร์โอเพ่นซอร์สที่ใช้โปรโตคอล SSH รองรับทั้งการเชื่อมต่อระยะไกล การโอนย้ายไฟล์อย่างปลอดภัย (SCP, SFTP) และ port forwarding

2.1.2 การติดตั้ง OpenSSH

Ubuntu ไม่ได้ติดตั้ง SSH server มาโดยอัตโนมัติ สามารถติดตั้งด้วยคำสั่งนี้:

sudo apt update && sudo apt install -y openssh-server

คำสั่งนี้จะอัปเดตรายชื่อแพ็คเกจและติดตั้ง OpenSSH server

2.1.3 การเริ่มต้นและตั้งค่า autostart ให้ SSH server

เมื่อการติดตั้งเสร็จสิ้น ให้เริ่มต้น SSH server และตั้งให้ทำงานอัตโนมัติ:

sudo systemctl enable --now ssh

การใช้ enable จะทำให้ SSH ทำงานอัตโนมัติเมื่อเปิดเครื่อง

2.1.4 การตรวจสอบสถานะการทำงานของ SSH

ตรวจสอบสถานะการทำงานของ SSH server ด้วยคำสั่งนี้:

systemctl status ssh

หากแสดงผลแบบนี้ แสดงว่า SSH server ทำงานปกติ

● ssh.service - OpenBSD Secure Shell server
   Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
   Active: active (running) since Fri 2025-02-28 12:00:00 UTC; 5min ago

หากขึ้นว่า inactive (dead) หรือ failed ให้รันคำสั่งนี้เพื่อเริ่มต้นบริการ:

sudo systemctl start ssh

2.2 การตั้งค่าไฟร์วอลล์ (UFW)

Ubuntu มี firewall ที่ตั้งค่าง่ายชื่อ ufw (Uncomplicated Firewall) เพื่ออนุญาตการเชื่อมต่อ SSH ต้องตั้งค่า UFW ให้ถูกต้อง

2.2.1 ตรวจสอบสถานะ UFW

ตรวจสอบสถานะ firewall:

sudo ufw status

ตัวอย่างผลลัพธ์ (UFW ปิดอยู่):

Status: inactive

ตัวอย่างผลลัพธ์ (UFW เปิดอยู่):

Status: active
To                         Action      From
--                         ------      ----
22/tcp                     ALLOW       Anywhere

2.2.2 อนุญาตการสื่อสาร SSH

อนุญาต port SSH (22) ด้วยคำสั่ง:

sudo ufw allow ssh

หรือระบุ port โดยตรง:

sudo ufw allow 22/tcp

2.2.3 เปิดใช้งาน UFW

หาก UFW ปิดอยู่ ให้เปิดด้วยคำสั่ง:

sudo ufw enable

**หมายเหตุ:** ตรวจสอบให้แน่ใจว่าอนุญาต SSH แล้วก่อนเปิดใช้งาน UFW

2.2.4 ตรวจสอบการตั้งค่า UFW

ยืนยันการตั้งค่าด้วย:

sudo ufw status verbose

ตัวอย่างผลลัพธ์:

Status: active
To                         Action      From
--                         ------      ----
22/tcp                     ALLOW       Anywhere
22/tcp (v6)                ALLOW       Anywhere (v6)

หากแสดงผลลัพธ์นี้แปลว่าอนุญาตการเชื่อมต่อ SSH แล้ว

2.3 วิธีเชื่อมต่อ SSH เบื้องต้น

เมื่อ SSH server ทำงานแล้ว สามารถเชื่อมต่อจากคอมพิวเตอร์ลูกข่ายได้

2.3.1 เชื่อมต่อจาก Linux/macOS

บน Linux/macOS เปิด terminal แล้วรัน:

ssh ชื่อผู้ใช้@IP-Address-ของเซิร์ฟเวอร์

ตัวอย่าง:

ssh user@192.168.1.100

ครั้งแรกจะมีข้อความเตือนความถูกต้องของ host:

The authenticity of host '192.168.1.100 (192.168.1.100)' can't be established.
ECDSA key fingerprint is SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.
Are you sure you want to continue connecting (yes/no)?

พิมพ์ yes แล้วกด Enter เพื่อเชื่อมต่อ

2.3.2 เชื่อมต่อจาก Windows

บน Windows ใช้ PowerShell หรือ PuTTY ได้

PowerShell: (Windows 10 ขึ้นไปมี SSH client ในตัว)

ssh ชื่อผู้ใช้@IP-Address-ของเซิร์ฟเวอร์

PuTTY:

  1. ดาวน์โหลดและติดตั้ง PuTTY จากเว็บไซต์
  2. เปิด PuTTY กรอก Host Name (or IP address) เป็น IP ของเซิร์ฟเวอร์
  3. เลือก Connection type เป็น SSH แล้วคลิก Open
  4. กรอกชื่อผู้ใช้และรหัสผ่านเพื่อเข้าสู่ระบบ

สรุป

ในส่วนนี้ เราได้อธิบายขั้นตอนพื้นฐานในการตั้งค่า SSH บน Ubuntu

  • วิธีติดตั้งและเริ่มต้นใช้งาน OpenSSH
  • การอนุญาตการเชื่อมต่อ SSH ด้วย UFW
  • วิธีเชื่อมต่อ SSH จาก Linux/macOS และ Windows

3. การเพิ่มความปลอดภัยให้ SSH

แม้ SSH จะเป็นเครื่องมือที่สะดวกสำหรับการเชื่อมต่อระยะไกล แต่ถ้าใช้งานแบบค่าเริ่มต้น อาจมีความเสี่ยงด้านความปลอดภัย เช่น การโจมตีแบบ brute-force หรือ port scanning ดังนั้นจึงควรตั้งค่าความปลอดภัยเพิ่มเติม

3.1 การห้าม root login

ค่าเริ่มต้นของ SSH บน Ubuntu อาจอนุญาตให้ root เข้าระบบได้ ซึ่ง root เป็นบัญชีที่มีสิทธิ์สูงสุดและมักตกเป็นเป้าหมายของผู้โจมตี การปิดกั้น root login และใช้ user ทั่วไปจะปลอดภัยกว่า

3.1.1 ขั้นตอนการตั้งค่า

  1. แก้ไขไฟล์ตั้งค่า SSH /etc/ssh/sshd_config
sudo nano /etc/ssh/sshd_config
  1. ค้นหาบรรทัด PermitRootLogin และเปลี่ยนเป็น PermitRootLogin no
PermitRootLogin no
  1. บันทึกไฟล์และรีสตาร์ท SSH service
sudo systemctl restart ssh
  1. ตรวจสอบการตั้งค่า
sudo grep PermitRootLogin /etc/ssh/sshd_config

หากผลลัพธ์เป็น PermitRootLogin no แปลว่าตั้งค่าสำเร็จ

3.2 การปิดการใช้งาน password authentication และใช้งาน public key authentication

SSH แนะนำให้ใช้ public key authentication แทน password authentication เพื่อความปลอดภัยสูงขึ้น ลดโอกาสการถูก brute-force

3.2.1 สร้าง SSH key

สร้าง key บนคอมพิวเตอร์ของคุณ:

ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa

จะได้ไฟล์สองไฟล์:

  • id_rsa (private key): เก็บไว้ที่เครื่อง อย่าเผยแพร่
  • id_rsa.pub (public key): อัพโหลดไปยังเซิร์ฟเวอร์

3.2.2 ส่ง public key ไปยังเซิร์ฟเวอร์

ssh-copy-id ชื่อผู้ใช้@IP-Address-ของเซิร์ฟเวอร์

3.2.3 ปิด password authentication

แก้ไข /etc/ssh/sshd_config เปลี่ยน

PasswordAuthentication no

แล้วรีสตาร์ท SSH

sudo systemctl restart ssh

3.3 จำกัด user ที่สามารถเข้าใช้งาน SSH

เพื่อความปลอดภัย สามารถกำหนด user ที่อนุญาตให้เชื่อมต่อ SSH ได้เท่านั้น

3.3.1 ขั้นตอนการตั้งค่า

  1. เปิดไฟล์ /etc/ssh/sshd_config
sudo nano /etc/ssh/sshd_config
  1. เพิ่มบรรทัด
AllowUsers user1 user2
  1. รีสตาร์ท SSH
sudo systemctl restart ssh

3.4 เปลี่ยนพอร์ต SSH

ค่าเริ่มต้นคือ port 22 สามารถเปลี่ยนเป็นพอร์ตอื่นเพื่อลดความเสี่ยงถูกโจมตี

3.4.1 ขั้นตอนการตั้งค่า

  1. เปิดไฟล์ /etc/ssh/sshd_config
sudo nano /etc/ssh/sshd_config
  1. เปลี่ยนหรือเพิ่มบรรทัด เช่น
Port 2200
  1. รีสตาร์ท SSH
sudo systemctl restart ssh

3.4.2 อัพเดทไฟร์วอลล์ให้รองรับพอร์ตใหม่

sudo ufw allow 2200/tcp

และตรวจสอบ

sudo ufw status

3.5 ป้องกัน brute-force attack ด้วย Fail2Ban

Fail2Ban จะตรวจจับความพยายามล็อกอินที่ล้มเหลวและบล็อก IP นั้นชั่วคราว

3.5.1 ติดตั้ง Fail2Ban

sudo apt install fail2ban -y

3.5.2 สร้างไฟล์ตั้งค่า

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local

เพิ่มหรือแก้ไขดังนี้:

[sshd]
enabled = true
port = 2200
maxretry = 3
findtime = 600
bantime = 3600

3.5.3 รีสตาร์ท Fail2Ban

sudo systemctl restart fail2ban

3.5.4 ตรวจสอบ IP ที่ถูกแบน

sudo fail2ban-client status sshd

สรุป

ส่วนนี้ได้อธิบายวิธีเสริมความปลอดภัยให้ SSH

  • ห้าม root login
  • ปิด password authentication และใช้ public key
  • จำกัด user ที่อนุญาต SSH
  • เปลี่ยนพอร์ต SSH
  • ติดตั้ง Fail2Ban

เมื่อทำตามนี้ จะช่วยเพิ่มความปลอดภัยในการใช้งาน SSH ของคุณ

4. การตั้งค่าขั้นสูงของ SSH

หลังจากตั้งค่าพื้นฐานและความปลอดภัยแล้ว สามารถตั้งค่าขั้นสูงเพื่อเพิ่มความสะดวกและความปลอดภัยในการใช้งาน SSH ได้ ส่วนนี้จะอธิบายการจัดการ ssh.socket (สำหรับ Ubuntu 22.10 ขึ้นไป), การทำ SSH Tunnel (port forwarding), การรอรับหลายพอร์ต และการจำกัด IP

4.1 ใช้งาน ssh.socket ใน Ubuntu 22.10 ขึ้นไป

ใน Ubuntu 22.10 ขึ้นไป การจัดการบริการ SSH อาจเปลี่ยนจาก ssh.service เป็น ssh.socket ซึ่งจะช่วยประหยัด resource โดย SSH จะเริ่มทำงานเมื่อมีการร้องขอเชื่อมต่อเท่านั้น

4.1.1 ตรวจสอบสถานะ ssh.socket

ตรวจสอบว่า ssh.socket ทำงานหรือไม่ด้วย:

sudo systemctl status ssh.socket

ตัวอย่างผลลัพธ์ (เปิดใช้งาน):

● ssh.socket - OpenSSH Server Socket
   Loaded: loaded (/lib/systemd/system/ssh.socket; enabled; vendor preset: enabled)
   Active: active (listening) since Fri 2025-02-28 12:00:00 UTC

4.1.2 การเปิดหรือปิดใช้งาน ssh.socket

เปิดใช้งาน ssh.socket:

sudo systemctl enable --now ssh.socket

หากต้องการกลับไปใช้ ssh.service แบบเดิม:

sudo systemctl disable --now ssh.socket
sudo systemctl enable --now ssh.service

4.2 การใช้ SSH Tunnel (Port Forwarding)

SSH Tunnel ช่วยให้สามารถส่งข้อมูลอย่างปลอดภัยระหว่างเครื่อง local กับเซิร์ฟเวอร์ เช่น เชื่อมต่อฐานข้อมูลหรือบริการเว็บแบบเข้ารหัส

4.2.1 Local Port Forwarding

เชื่อมต่อฐานข้อมูล MySQL (port 3306) ที่เซิร์ฟเวอร์จากเครื่อง local:

ssh -L 3306:localhost:3306 ชื่อผู้ใช้@IP-Address-ของเซิร์ฟเวอร์

4.2.2 Reverse Port Forwarding

เผยแพร่ web server ในเครื่อง local ผ่าน port 8080 ของเซิร์ฟเวอร์:

ssh -R 8080:localhost:80 ชื่อผู้ใช้@IP-Address-ของเซิร์ฟเวอร์

4.2.3 Dynamic Port Forwarding

ใช้ SSH เป็น SOCKS proxy (เช่น สำหรับการท่องเว็บแบบปกปิดตัวตน):

ssh -D 1080 ชื่อผู้ใช้@IP-Address-ของเซิร์ฟเวอร์

4.3 การรอรับ SSH หลายพอร์ต

SSH สามารถรอรับหลายพอร์ต เพื่อให้รองรับหลายเครือข่ายหรือความต้องการเฉพาะ

4.3.1 ขั้นตอนการตั้งค่า

  1. แก้ไข /etc/ssh/sshd_config
sudo nano /etc/ssh/sshd_config
  1. เพิ่มบรรทัด เช่น
Port 22
Port 2200
  1. รีสตาร์ท SSH
sudo systemctl restart ssh
  1. อนุญาตพอร์ตใหม่ใน UFW
sudo ufw allow 2200/tcp

4.4 อนุญาต SSH เฉพาะ IP ที่กำหนด

เพื่อเพิ่มความปลอดภัย สามารถกำหนดให้เฉพาะ IP address ที่อนุญาตเท่านั้นที่เข้าถึง SSH ได้

4.4.1 ตั้งค่า /etc/hosts.allow

เพิ่ม IP ที่อนุญาตใน /etc/hosts.allow:

sudo nano /etc/hosts.allow

เพิ่มบรรทัดนี้ (แทนที่ 192.168.1.100 ด้วย IP ที่ต้องการ):

sshd: 192.168.1.100

4.4.2 ตั้งค่า /etc/hosts.deny

บล็อก IP อื่นทั้งหมดใน /etc/hosts.deny:

sudo nano /etc/hosts.deny
sshd: ALL

เมื่อกำหนดแบบนี้ จะอนุญาตเฉพาะ IP ที่ระบุใน hosts.allow เท่านั้น

สรุป

ในส่วนนี้ อธิบายการตั้งค่าขั้นสูงของ SSH ได้แก่

  • การจัดการ ssh.socket สำหรับ Ubuntu 22.10 ขึ้นไป
  • การใช้ SSH Tunnel (port forwarding)
  • การรอรับ SSH หลายพอร์ต
  • การอนุญาต SSH เฉพาะบาง IP

การตั้งค่าเหล่านี้จะช่วยเพิ่มทั้งความปลอดภัยและความยืดหยุ่นให้กับการใช้งาน SSH ของคุณ

5. การแก้ไขปัญหา SSH (Troubleshooting)

แม้จะตั้งค่า SSH ถูกต้อง แต่บางครั้งอาจพบปัญหาในการเชื่อมต่อ ส่วนนี้จะแนะนำแนวทางแก้ไขปัญหาทั่วไปและวิธีตรวจสอบ

5.1 ไม่สามารถเชื่อมต่อ SSH ได้

หากเชื่อมต่อแล้วขึ้น Connection refused หรือ timeout อาจเกิดจากสาเหตุต่อไปนี้

5.1.1 SSH service ไม่ทำงาน

ตรวจสอบสถานะ SSH:

sudo systemctl status ssh

วิธีแก้ไข:

  • ถ้าแสดง Active: inactive (dead) หรือ failed ให้รีสตาร์ท SSH
sudo systemctl restart ssh
  • ถ้าต้องการให้ SSH ทำงานอัตโนมัติ:
sudo systemctl enable ssh

5.1.2 พอร์ตไม่ได้เปิด

ถ้าเปลี่ยนพอร์ต SSH ต้องระบุพอร์ตขณะเชื่อมต่อ:

ssh -p 2200 ชื่อผู้ใช้@IP-Address-ของเซิร์ฟเวอร์

ตรวจสอบพอร์ตที่เปิดด้วย:

sudo netstat -tulnp | grep ssh

หรือ:

ss -tulnp | grep ssh

5.1.3 ตรวจสอบการตั้งค่าไฟร์วอลล์ (UFW)

ตรวจสอบว่า UFW บล็อก SSH หรือไม่:

sudo ufw status

ถ้ายังไม่อนุญาต SSH:

sudo ufw allow 22/tcp

ถ้าใช้พอร์ตอื่น:

sudo ufw allow 2200/tcp

5.2 พบข้อผิดพลาดด้านการยืนยันตัวตน (Authentication Error)

5.2.1 ชื่อผู้ใช้หรือรหัสผ่านผิด

ตรวจสอบชื่อผู้ใช้ให้ถูกต้อง:

ssh ชื่อผู้ใช้@IP-Address-ของเซิร์ฟเวอร์

5.2.2 ตั้งค่า public key authentication ไม่ถูกต้อง

ตรวจสอบไฟล์ ~/.ssh/authorized_keys บนเซิร์ฟเวอร์ว่ามี public key ตรงกับเครื่อง local หรือไม่:

cat ~/.ssh/authorized_keys

5.2.3 สิทธิ์ของ .ssh directory ไม่ถูกต้อง

ตั้งค่าสิทธิ์:

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

และเช็คสิทธิ์โฟลเดอร์ home:

chmod 755 /home/ชื่อผู้ใช้

5.3 SSH หลุดบ่อย หรือถูกตัดการเชื่อมต่อ (Timeout)

อาจเกิดจากการตั้งค่า timeout บน server หรือ client

5.3.1 ปรับ ClientAliveInterval

แก้ไข /etc/ssh/sshd_config:

ClientAliveInterval 60
ClientAliveCountMax 3

แล้วรีสตาร์ท SSH:

sudo systemctl restart ssh

5.3.2 ตั้งค่า client

เพิ่มใน ~/.ssh/config ที่เครื่อง local:

Host *
    ServerAliveInterval 60
    ServerAliveCountMax 3

5.4 ตรวจสอบ log ของ SSH

การดู log จะช่วยแก้ไขปัญหาได้ง่ายขึ้น

5.4.1 ดู log แบบ real-time

sudo journalctl -u ssh -f

5.4.2 ดู log ย้อนหลัง

sudo cat /var/log/auth.log | grep ssh

หรือหาข้อผิดพลาดโดยเฉพาะ:

sudo grep "Failed password" /var/log/auth.log

สรุป

ในส่วนนี้ เราได้อธิบายแนวทางแก้ไขปัญหา SSH ที่พบบ่อย

  • ตรวจสอบว่า SSH ทำงานอยู่หรือไม่
  • เช็คการเปิดพอร์ต
  • ตรวจสอบไฟร์วอลล์
  • ตรวจสอบ public key และสิทธิ์ไฟล์
  • แก้ปัญหา timeout
  • ดู log เพื่อระบุปัญหา

ปัญหา SSH ส่วนใหญ่มักเกิดจากการตั้งค่าผิดพลาดหรือปัญหาเครือข่าย หากพบปัญหาให้ใช้แนวทางในบทนี้ตรวจสอบและแก้ไข

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

รวมคำถามเกี่ยวกับการตั้งค่าและการใช้งาน SSH ที่มักถูกถามบ่อย พร้อมคำตอบและแนวทางแก้ไข เพื่อช่วยให้ใช้งาน SSH ได้อย่างสะดวกและปลอดภัย

6.1 กรณี SSH หลุดเองหรือตัดการเชื่อมต่อ (Timeout) ต้องทำอย่างไร?

ถ้า SSH ตัดการเชื่อมต่ออัตโนมัติหลังผ่านไปสักพัก แนะนำให้ตั้งค่าต่อไปนี้

6.1.1 เปลี่ยนค่าที่เซิร์ฟเวอร์

แก้ไข /etc/ssh/sshd_config:

ClientAliveInterval 60
ClientAliveCountMax 3

รีสตาร์ท SSH:

sudo systemctl restart ssh

6.1.2 เปลี่ยนค่าที่ client

เพิ่มใน ~/.ssh/config ที่เครื่อง local:

Host *
    ServerAliveInterval 60
    ServerAliveCountMax 3

6.2 ลืมรหัสผ่าน SSH จะแก้อย่างไร?

6.2.1 ถ้าเข้าถึงเครื่องจริงได้

  1. บูตเข้า single user mode (ผ่าน GRUB เลือก recovery mode)
  2. รีเซ็ตรหัสผ่าน
passwd ชื่อผู้ใช้
  1. รีสตาร์ทระบบ

6.2.2 ถ้าเป็น VPS/Cloud (ไม่มีทางเข้าถึงเครื่องจริง)

  • ใช้ฟีเจอร์ console ของผู้ให้บริการ VPS เพื่อเปลี่ยนรหัสผ่าน
  • ใช้การยืนยันตัวตนด้วย public key

6.3 จะใช้ SSH บน Windows ได้อย่างไร?

6.3.1 ใช้ PowerShell

Windows 10 ขึ้นไปมี SSH client ในตัว ใช้คำสั่ง:

ssh ชื่อผู้ใช้@IP-Address-ของเซิร์ฟเวอร์

6.3.2 ใช้ PuTTY

  1. ดาวน์โหลดและติดตั้ง PuTTY
  2. ใส่ IP เซิร์ฟเวอร์ที่ Host Name (or IP address)
  3. เลือก Connection type เป็น SSH แล้วคลิก Open
  4. กรอกชื่อผู้ใช้และรหัสผ่าน

6.4 ถ้าใช้ Ubuntu WSL (Windows Subsystem for Linux) แล้วอยากตั้งค่า SSH ต้องทำอย่างไร?

6.4.1 ติดตั้ง SSH server

sudo apt update && sudo apt install openssh-server

6.4.2 ตั้งค่า SSH

แก้ไข /etc/ssh/sshd_config ให้มีบรรทัด

PasswordAuthentication yes

WSL ไม่ได้ใช้ systemd โดยตรง จึงต้องสั่งสตาร์ท SSH ด้วยตนเอง:

sudo service ssh start

6.5 หลังตั้งค่า SSH ควรเสริมความปลอดภัยอย่างไร?

6.5.1 ติดตั้ง Fail2Ban

ป้องกัน brute-force ด้วย Fail2Ban:

sudo apt install fail2ban -y

แก้ไข /etc/fail2ban/jail.local เช่น

[sshd]
enabled = true
port = 22
maxretry = 3
findtime = 600
bantime = 3600

รีสตาร์ท:

sudo systemctl restart fail2ban

6.5.2 เปลี่ยนพอร์ต SSH

แก้ไข /etc/ssh/sshd_config:

Port 2200

รีสตาร์ท SSH และอนุญาตพอร์ตใหม่ใน UFW:

sudo ufw allow 2200/tcp

6.6 จะตรวจสอบ log ของ SSH บน Ubuntu แบบเรียลไทม์ได้อย่างไร?

sudo journalctl -u ssh -f

ถ้าต้องการดูย้อนหลัง:

sudo cat /var/log/auth.log | grep ssh

6.7 จะใช้ SSH ให้สะดวกขึ้นได้อย่างไร?

6.7.1 ตั้งค่า .ssh/config สำหรับการ login อัตโนมัติ

สร้างหรือแก้ไข ~/.ssh/config เช่น

Host myserver
    HostName 192.168.1.100
    User user
    Port 2200
    IdentityFile ~/.ssh/id_rsa

จากนั้นเชื่อมต่อด้วยคำสั่งสั้น ๆ:

ssh myserver

6.7.2 ใช้งาน ssh-agent

เพื่อลดการกรอกรหัสผ่านของ private key:

eval $(ssh-agent -s)
ssh-add ~/.ssh/id_rsa

สรุป

ส่วนนี้ได้นำเสนอคำถาม-คำตอบเกี่ยวกับ SSH ที่มักพบในชีวิตจริง

  • วิธีแก้ปัญหา timeout
  • การรีเซ็ตรหัสผ่าน
  • SSH บน Windows และ WSL
  • เสริมความปลอดภัยหลังตั้งค่า
  • วิธีดู log
  • การใช้ .ssh/config เพื่อความสะดวก

หวังว่าบทความนี้จะช่วยให้คุณตั้งค่าและใช้งาน SSH ได้อย่างปลอดภัยและราบรื่น

บทความที่เกี่ยวข้อง

บทความที่เกี่ยวข้อง

1. บทนำ การใช้ SSH บน Ubuntu ช่วยให้คุณสามารถเข้าถึงและจัดการเซิร์ฟเวอร์หรือพีซีจากระยะไกลได้อย่างปลอดภัย บทความนี้จะอธ[…]