CH-J Server Managerquản lý máy chủ qua SSH
Menu
Tất cả hướng dẫn và bài viết →

Máy chủ đang trực tuyến nhưng cổng SSH 22 không phản hồi

Kiểm tra lần lượt máy khách, mạng, tường lửa và sshd để tìm lý do máy chủ trả lời nhưng SSH không phản hồi.

Kiểm tra trực tiếp cổng

Có phản hồi ping hay trang web hoạt động không nói lên điều gì về SSH, vì mỗi loại dùng giao thức hoặc cổng khác nhau. Hãy kiểm tra cổng TCP trực tiếp từ máy khách. Connection refused nghĩa là có phản hồi nhưng không dịch vụ nào chấp nhận kết nối. Timeout nghĩa là không có phản hồi, thường cho thấy vấn đề ở tường lửa, định tuyến hoặc máy bị quá tải.

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

Connection refused: kiểm tra sshd từ bảng điều khiển

Dùng bảng điều khiển của nhà cung cấp hoặc trình giám sát máy ảo, thay vì SSH. Kiểm tra dịch vụ có đang chạy không, đang lắng nghe trên địa chỉ và cổng nào, và cấu hình có hợp lệ không. Trên các bản Ubuntu gần đây, SSH khởi động qua ssh.socket, vì vậy hãy kiểm tra cả đơn vị socket này. Các bản phân phối khác có thể đặt tên dịch vụ là 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: kiểm tra các tường lửa

Kiểm tra tường lửa trên máy chủ và cả các bộ lọc bên ngoài, như nhóm bảo mật đám mây, bộ định tuyến hoặc bảng quản lý của nhà cung cấp. Để xem gói tin có đến hay không, chạy tcpdump trên máy chủ trong lúc thử kết nối. Nếu không thấy gì, điểm chặn nằm trước máy chủ. Nếu gói tin đến nhưng không có phản hồi đi ra, hãy kiểm tra trên máy chủ.

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

Bị chặn bởi fail2ban hoặc do đổi cổng

Sau các lần đăng nhập thất bại, fail2ban có thể đã chặn địa chỉ của bạn, khiến chỉ kết nối từ địa chỉ đó gặp timeout hoặc bị từ chối. Thử từ mạng khác sẽ nhanh chóng làm rõ điều này. Cũng kiểm tra việc đổi cổng bằng Port hoặc giới hạn ở một địa chỉ bằng ListenAddress trong sshd_config hay trong một tệp dưới /etc/ssh/sshd_config.d.

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

Kết nối được tới cổng nhưng đăng nhập bị treo

Nếu kết nối TCP thành công nhưng chuỗi chào SSH không bao giờ đến, sshd chỉ hoạt động một phần hoặc hệ thống đang quá tải. Kiểm tra bộ nhớ, dung lượng đĩa và tải từ bảng điều khiển. Đĩa đầy hoặc cạn bộ nhớ có thể ngăn mở phiên mới trong khi các dịch vụ hiện có vẫn phản hồi.

uptime
free -h
df -h

Kiểm tra bằng CH-J Server Manager

Server Diagnostics có thể kiểm tra ping, kết nối TCP và chuỗi nhận dạng SSH mà không đăng nhập, cho cả IPv4 và IPv6, giúp bạn thấy giai đoạn nào thất bại. Công cụ chỉ thực hiện kiểm tra từ máy tính của bạn. Nó không thể xem bên trong máy chủ hay cho biết tường lửa nào đã loại bỏ gói tin, nên bạn vẫn cần bảng điều khiển cho các bước kiểm tra ở trên.

Tài liệu chi tiết

OpenSSH: sshd →

man: ss →

Mở khóa sinh trắc học và bảo mật →