Site icon ZingServer

Không SSH được vào VPS Linux: 10 nguyên nhân và cách sửa lỗi (Update 2025)

Không SSH được vào VPS Linux 10 nguyên nhân và cách sửa lỗi (Update 2025)

Không SSH được vào VPS Linux 10 nguyên nhân và cách sửa lỗi (Update 2025)

Nếu bạn đang quản trị VPS Linux, có lẽ không có gì gây hoang mang hơn việc đột ngột không SSH được vào VPS Linux của mình. Màn hình terminal chỉ trả về lỗi “Connection timed out”, “Connection refused”, hoặc các cảnh báo khó hiểu, trong khi máy chủ của bạn có thể đang vận hành các ứng dụng và website quan trọng.

Sự cố này có thể làm đình trệ mọi công việc. Tình trạng không SSH được vào VPS Linux không chỉ xảy ra với người mới, mà ngay cả các quản trị viên hệ thống (SysAdmin) kinh nghiệm đôi khi cũng phải bối rối. Nguyên nhân có thể đến từ một thiết lập sai rất nhỏ trên server, một quy tắc tường lửa vô tình được kích hoạt, hoặc thậm chí là một vấn đề ngay trên máy tính của bạn.

Thay vì mò mẫm trong vô vọng, bài viết này sẽ cung cấp một quy trình “troubleshooting” (gỡ rối) toàn diện, đi từ các lỗi phía client (máy tính của bạn) đến các chẩn đoán kỹ thuật sâu bên trong server.

Gỡ rối nhanh trong 60 giây

Không SSH được? Hầu hết các lỗi nằm ở 1 trong 4 nguyên nhân chính sau. Hãy kiểm tra theo thứ tự:

  1. Kiểm tra Client: Thử kết nối SSH bằng mạng 4G/5G. Nếu vào được, IP Wi-Fi của bạn đã bị chặn. (Xem Nguyên nhân 7: Fail2Ban).
  2. Kiểm tra dịch vụ SSH (Qua VNC/Console): Đăng nhập VNC và chạy systemctl status sshd. Nếu thấy inactive (dead), chạy systemctl start sshd.
  3. Kiểm tra tường lửa Server (Qua VNC): Chạy ufw status (nếu là Ubuntu) hoặc firewall-cmd --list-all (nếu là CentOS). Đảm bảo cổng 22 (hoặc cổng SSH của bạn) được ALLOW.
  4. Kiểm tra tường lửa Cloud: Đăng nhập vào Panel của nhà cung cấp. Kiểm tra mục “Firewall” hoặc “Security Group” và đảm bảo đã mở cổng SSH.

Checklist kiểm tra phía Client (5 bước gỡ rối nhanh)

Trước khi “đổ lỗi” cho VPS, hãy chắc chắn vấn đề không xuất phát từ chính máy tính của bạn. Các lỗi này rất phổ biến và may mắn là dễ khắc phục nhất.

Lỗi “WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!”

Đây là cảnh báo bảo mật cực kỳ phổ biến khiến người dùng hoang mang.

Lỗi “Permission Denied” do sai quyền (Permissions) File Key

Nếu bạn đang sử dụng SSH Key (khuyến nghị) thay vì mật khẩu, đây là lỗi thường gặp.

Lỗi phân giải tên miền (Hostname Resolution)

Lỗi này xảy ra khi bạn dùng tên miền (hostname) thay vì IP để kết nối.

Kiểm tra kết nối mạng cơ bản (Ping, Telnet, 4G)

Dùng chế độ “verbose” (ssh -v)

Đây là công cụ gỡ rối “thần thánh”. Tùy chọn -v (verbose) sẽ bắt SSH client in ra mọi bước nó đang làm, giúp bạn thấy chính xác nó bị “kẹt” ở đâu.

ssh -v ten_user@IP_VPS_CUA_BAN

(Bạn có thể dùng -vv hoặc -vvv để xem chi tiết hơn nữa). Hãy quan sát các dòng cuối cùng trước khi bị treo hoặc báo lỗi, chúng sẽ cho bạn manh mối rõ ràng nhất.

“Cửa hậu” bắt buộc: Đăng nhập VNC (Console)

Nếu bạn đã làm mọi bước kiểm tra phía Client mà vẫn thất bại, vấn đề chắc chắn nằm ở Server. Nhưng làm sao để vào Server khi SSH đã hỏng?

Đây là lúc bạn cần dùng “chìa khóa cứu cánh” (lifesaver): VNC hoặc Web Console.

Mọi nhà cung cấp VPS uy tín đều cung cấp một tính năng trong trang quản trị (panel) của họ, cho phép bạn mở một màn hình giả lập, truy cập trực tiếp vào VPS như đang cắm bàn phím và màn hình vào nó.

Mọi bước gỡ rối “Server-side” dưới đây BẮT BUỘC phải được thực hiện thông qua VNC/Console.

10 nguyên nhân cốt lõi khiến bạn không SSH được vào VPS Linux (Sửa qua VNC)

Sau khi đã đăng nhập vào VPS qua VNC, bạn sẽ thấy một màn hình terminal. Hãy đăng nhập bằng user root và mật khẩu của bạn để bắt đầu chẩn đoán.

Dịch vụ SSH (sshd) bị dừng hoặc crash

Đây là nguyên nhân hàng đầu gây ra lỗi “Connection refused”. Dịch vụ có thể bị dừng do cập nhật lỗi, thiếu RAM (bị OOM Killer “giết”), hoặc ai đó vô tình tắt.

OpenSSH Server chưa được cài đặt

Lỗi này hiếm nhưng có thể xảy ra nếu bạn tự cài một bản “minimal” (tối thiểu) của Linux.

Tường lửa Server (UFW/Firewalld) chặn cổng

Đây là nguyên nhân chính gây ra lỗi “Connection timed out” (khi telnet thất bại). Dịch vụ SSH vẫn chạy, nhưng tường lửa (Firewall) ngay trên VPS đang chặn mọi kết nối đến cổng 22.

Firewall Lệnh kiểm tra trạng thái Lệnh mở cổng 22 (SSH)
UFW (Ubuntu, Debian) ufw status ufw allow 22 (hoặc ufw allow ssh)
Firewalld (CentOS, RHEL) firewall-cmd --list-all firewall-cmd --permanent --add-service=ssh (Và firewall-cmd --reload)
iptables (Cũ/Tùy chỉnh) iptables -L -n -v (Tìm dòng DROP port 22) iptables -A INPUT -p tcp --dport 22 -j ACCEPT (Cần lưu cấu hình)

[Nâng cao] SELinux chặn kết nối (Lỗi phổ biến trên CentOS/RHEL)

Đây là một “thủ phạm giấu mặt” cực kỳ khó chịu. Dịch vụ sshd đang “running”, firewalld đã “allow” port 22, nhưng bạn vẫn Timed Out. Rất có thể đó là SELinux.

SELinux (Security-Enhanced Linux) là một lớp bảo mật sâu của Red Hat.

Lỗi cấu hình SSH (sshd_config)

Lỗi Cloud Firewall / Security Group (Lỗi “ngầm” khó phát hiện)

Đây là nguyên nhân “đau đớn” nhất. Bạn đã tắt ufw, tắt firewalld, tắt cả SELinux… nhưng vẫn Timed Out.

IP của bạn bị ban (Fail2Ban / CSF)

VPS bị quá tải hoặc hết dung lượng (CPU/RAM/Disk/Inode)

Khi VPS bị treo cứng, 100% CPU, hết sạch RAM (OOM), hoặc ổ cứng bị đầy 100%, dịch vụ SSH có thể không đủ tài nguyên để phản hồi, gây ra lỗi “Timed Out”.

Quyền (Permission) file phía Server

Lỗi từ nhà cung cấp hoặc thanh toán

Đây là nguyên nhân phi kỹ thuật mà nhiều người bỏ sót.

Kết luận

Khi không SSH được vào VPS Linux, đừng vội hoảng sợ. Hãy bình tĩnh thực hiện theo quy trình:

  1. Kiểm tra Client: Thử 4G, ssh-keygen -R (nếu lỗi Host Key), chmod 600 (nếu lỗi Key Permission), telnet (kiểm tra cổng).
  2. Kiểm tra Panel: Đăng nhập Panel, kiểm tra Cloud Firewall / Security Group.
  3. Kiểm tra Server (Qua VNC): Đăng nhập VNC, kiểm tra systemctl status sshd (dịch vụ), sau đó kiểm tra ufw status / firewall-cmd (tường lửa server), và cuối cùng là getenforce (SELinux).

Để phòng tránh sự cố này trong tương lai, hãy:

Tài liệu tham khảo

Exit mobile version