CH-J Server Managerการจัดการเซิร์ฟเวอร์ผ่าน SSH
เมนู
คู่มือและบทความทั้งหมด →

เซิร์ฟเวอร์ออนไลน์แต่พอร์ต SSH 22 ไม่ตอบสนอง

ตรวจไคลเอนต์ เครือข่าย ไฟร์วอลล์ และ sshd ตามลำดับ เพื่อหาสาเหตุที่เซิร์ฟเวอร์ตอบกลับแต่ SSH ไม่ตอบสนอง

ทดสอบที่พอร์ตโดยตรง

การตอบกลับ ping หรือเว็บไซต์ที่ใช้งานได้ไม่ได้บอกสถานะของ SSH เพราะแต่ละอย่างใช้โปรโตคอลหรือพอร์ตต่างกัน ให้ทดสอบพอร์ต TCP โดยตรงจากไคลเอนต์ Connection refused หมายถึงมีการตอบกลับแต่ไม่มีบริการยอมรับการเชื่อมต่อ ส่วน timeout หมายถึงไม่มีการตอบกลับ ซึ่งมักชี้ไปที่ไฟร์วอลล์ การกำหนดเส้นทาง หรือเครื่องที่มีภาระงานสูงเกินไป

nc -vz -w 5 server.example 22
ssh -v -o ConnectTimeout=5 user@server.example

Connection refused: ตรวจ sshd ผ่านคอนโซล

ใช้คอนโซลของผู้ให้บริการหรือไฮเปอร์ไวเซอร์ แทนการใช้ SSH ตรวจว่าบริการทำงานอยู่หรือไม่ กำลังฟังที่แอดเดรสและพอร์ตใด และการตั้งค่าถูกต้องหรือไม่ ใน Ubuntu รุ่นใหม่ ๆ SSH เริ่มทำงานผ่าน ssh.socket จึงต้องตรวจยูนิต socket ด้วย ดิสทริบิวชันอื่นอาจตั้งชื่อบริการว่า sshd

sudo systemctl status ssh.service ssh.socket
sudo ss -lntp | grep -E ':22\b|sshd'
sudo sshd -t
sudo journalctl -u ssh -n 50 --no-pager

Timeout: ตรวจไฟร์วอลล์

ตรวจไฟร์วอลล์บนเซิร์ฟเวอร์ รวมถึงตัวกรองภายนอก เช่น กลุ่มความปลอดภัยบนคลาวด์ เราเตอร์ หรือแผงควบคุมของผู้ให้บริการ หากต้องการดูว่ามีแพ็กเก็ตมาถึงหรือไม่ ให้รัน tcpdump บนเซิร์ฟเวอร์ระหว่างลองเชื่อมต่อ หากไม่มีอะไรปรากฏ แสดงว่ามีการบล็อกก่อนถึงเซิร์ฟเวอร์ หากแพ็กเก็ตมาถึงแต่ไม่มีคำตอบส่งออกไป ให้ตรวจที่เซิร์ฟเวอร์

sudo ufw status verbose
sudo nft list ruleset | less
sudo tcpdump -ni any tcp port 22

ถูกบล็อกโดย fail2ban หรือมีการเปลี่ยนพอร์ต

หลังล็อกอินล้มเหลว fail2ban อาจบล็อกแอดเดรสของคุณ ทำให้ดูเหมือน timeout หรือถูกปฏิเสธการเชื่อมต่อเฉพาะจากแอดเดรสของคุณ การทดสอบจากเครือข่ายอื่นช่วยให้ทราบได้อย่างรวดเร็ว ตรวจด้วยว่ามีการเปลี่ยนพอร์ตด้วย Port หรือจำกัดให้ฟังเพียงแอดเดรสเดียวด้วย ListenAddress ใน sshd_config หรือไฟล์ภายใต้ /etc/ssh/sshd_config.d.

sudo fail2ban-client status sshd
sudo sshd -T | grep -E '^(port|listenaddress) '

เชื่อมต่อพอร์ตได้แต่ล็อกอินค้าง

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

uptime
free -h
df -h

ตรวจด้วย CH-J Server Manager

Server Diagnostics ทดสอบ ping การเชื่อมต่อ TCP และสตริงระบุตัวตน SSH ได้โดยไม่ต้องล็อกอิน ทั้ง IPv4 และ IPv6 จึงช่วยให้เห็นว่าขั้นตอนใดล้มเหลว เครื่องมือนี้ทำงานจากคอมพิวเตอร์ของคุณเท่านั้น ไม่สามารถตรวจภายในเซิร์ฟเวอร์หรือระบุว่าไฟร์วอลล์ใดทิ้งแพ็กเก็ต คุณจึงยังต้องใช้คอนโซลเพื่อตรวจตามขั้นตอนข้างต้น

เอกสารโดยละเอียด

OpenSSH: sshd →

man: ss →

การปลดล็อกด้วยไบโอเมตริกและความปลอดภัย →