- 1 1. บทนำ
- 2 2. การตั้งค่า SSH เบื้องต้น
- 3 สรุป
- 4 3. การเพิ่มความปลอดภัยให้ SSH
- 5 สรุป
- 6 4. การตั้งค่าขั้นสูงของ SSH
- 7 สรุป
- 8 5. การแก้ไขปัญหา SSH (Troubleshooting)
- 9 สรุป
- 10 6. คำถามที่พบบ่อย (FAQ)
- 10.1 6.1 กรณี SSH หลุดเองหรือตัดการเชื่อมต่อ (Timeout) ต้องทำอย่างไร?
- 10.2 6.2 ลืมรหัสผ่าน SSH จะแก้อย่างไร?
- 10.3 6.3 จะใช้ SSH บน Windows ได้อย่างไร?
- 10.4 6.4 ถ้าใช้ Ubuntu WSL (Windows Subsystem for Linux) แล้วอยากตั้งค่า SSH ต้องทำอย่างไร?
- 10.5 6.5 หลังตั้งค่า SSH ควรเสริมความปลอดภัยอย่างไร?
- 10.6 6.6 จะตรวจสอบ log ของ SSH บน Ubuntu แบบเรียลไทม์ได้อย่างไร?
- 10.7 6.7 จะใช้ SSH ให้สะดวกขึ้นได้อย่างไร?
- 11 สรุป
- 12 บทความที่เกี่ยวข้อง
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:
- ดาวน์โหลดและติดตั้ง PuTTY จากเว็บไซต์
- เปิด PuTTY กรอก
Host Name (or IP address)
เป็น IP ของเซิร์ฟเวอร์ - เลือก
Connection type
เป็นSSH
แล้วคลิกOpen
- กรอกชื่อผู้ใช้และรหัสผ่านเพื่อเข้าสู่ระบบ
สรุป
ในส่วนนี้ เราได้อธิบายขั้นตอนพื้นฐานในการตั้งค่า 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 ขั้นตอนการตั้งค่า
- แก้ไขไฟล์ตั้งค่า SSH
/etc/ssh/sshd_config
sudo nano /etc/ssh/sshd_config
- ค้นหาบรรทัด
PermitRootLogin
และเปลี่ยนเป็นPermitRootLogin no
PermitRootLogin no
- บันทึกไฟล์และรีสตาร์ท SSH service
sudo systemctl restart ssh
- ตรวจสอบการตั้งค่า
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 ขั้นตอนการตั้งค่า
- เปิดไฟล์
/etc/ssh/sshd_config
sudo nano /etc/ssh/sshd_config
- เพิ่มบรรทัด
AllowUsers user1 user2
- รีสตาร์ท SSH
sudo systemctl restart ssh
3.4 เปลี่ยนพอร์ต SSH
ค่าเริ่มต้นคือ port 22 สามารถเปลี่ยนเป็นพอร์ตอื่นเพื่อลดความเสี่ยงถูกโจมตี
3.4.1 ขั้นตอนการตั้งค่า
- เปิดไฟล์
/etc/ssh/sshd_config
sudo nano /etc/ssh/sshd_config
- เปลี่ยนหรือเพิ่มบรรทัด เช่น
Port 2200
- รีสตาร์ท 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 ขั้นตอนการตั้งค่า
- แก้ไข
/etc/ssh/sshd_config
sudo nano /etc/ssh/sshd_config
- เพิ่มบรรทัด เช่น
Port 22
Port 2200
- รีสตาร์ท SSH
sudo systemctl restart ssh
- อนุญาตพอร์ตใหม่ใน 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 ถ้าเข้าถึงเครื่องจริงได้
- บูตเข้า single user mode (ผ่าน GRUB เลือก
recovery mode
) - รีเซ็ตรหัสผ่าน
passwd ชื่อผู้ใช้
- รีสตาร์ทระบบ
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
- ดาวน์โหลดและติดตั้ง PuTTY
- ใส่ IP เซิร์ฟเวอร์ที่
Host Name (or IP address)
- เลือก
Connection type
เป็นSSH
แล้วคลิกOpen
- กรอกชื่อผู้ใช้และรหัสผ่าน
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 ช่วยให้คุณสามารถเข้าถึงและจัดการเซิร์ฟเวอร์หรือพีซีจากระยะไกลได้อย่างปลอดภัย บทความนี้จะอธ[…]