ทดสอบที่พอร์ตโดยตรง
การตอบกลับ ping หรือเว็บไซต์ที่ใช้งานได้ไม่ได้บอกสถานะของ SSH เพราะแต่ละอย่างใช้โปรโตคอลหรือพอร์ตต่างกัน ให้ทดสอบพอร์ต TCP โดยตรงจากไคลเอนต์ Connection refused หมายถึงมีการตอบกลับแต่ไม่มีบริการยอมรับการเชื่อมต่อ ส่วน timeout หมายถึงไม่มีการตอบกลับ ซึ่งมักชี้ไปที่ไฟร์วอลล์ การกำหนดเส้นทาง หรือเครื่องที่มีภาระงานสูงเกินไป
nc -vz -w 5 server.example 22
ssh -v -o ConnectTimeout=5 user@server.exampleConnection 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-pagerTimeout: ตรวจไฟร์วอลล์
ตรวจไฟร์วอลล์บนเซิร์ฟเวอร์ รวมถึงตัวกรองภายนอก เช่น กลุ่มความปลอดภัยบนคลาวด์ เราเตอร์ หรือแผงควบคุมของผู้ให้บริการ หากต้องการดูว่ามีแพ็กเก็ตมาถึงหรือไม่ ให้รัน 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 จึงช่วยให้เห็นว่าขั้นตอนใดล้มเหลว เครื่องมือนี้ทำงานจากคอมพิวเตอร์ของคุณเท่านั้น ไม่สามารถตรวจภายในเซิร์ฟเวอร์หรือระบุว่าไฟร์วอลล์ใดทิ้งแพ็กเก็ต คุณจึงยังต้องใช้คอนโซลเพื่อตรวจตามขั้นตอนข้างต้น