SSH là gì và dùng để làm gì
SSH (Secure Shell, giao thức kết nối bảo mật) là giao thức mạng dùng để kết nối từ xa vào máy tính khác qua đường truyền được mã hoá hoàn toàn. Với chủ website, SSH là cách để “ngồi trước” server từ xa: gõ lệnh, xem log, cài phần mềm, quản lý file và cấu hình hệ thống, tất cả trong một cửa sổ terminal.
SSH ra đời năm 1995 để thay thế Telnet và rsh, hai giao thức kết nối từ xa đời trước không có mã hoá. Phiên bản phổ biến nhất hiện nay là OpenSSH, có mặt mặc định trên hầu hết hệ điều hành Linux và macOS, là nền tảng của hầu hết hosting và server hiện đại.
Không chỉ là công cụ kết nối trực tiếp, SSH còn là nền tảng cho SFTP (truyền file bảo mật) và SCP (sao chép file bảo mật). Đó là lý do cả hai giao thức đó đều dùng cùng cổng 22 với SSH. Bài SFTP là gì giải thích quan hệ này rõ hơn.

Khi nào chủ website cần dùng SSH
Không phải ai cũng cần SSH. Với shared hosting thông thường, bạn có thể quản lý website qua cPanel, WordPress dashboard, và SFTP mà không cần SSH. SSH trở nên cần thiết khi:
Dùng VPS hoặc server riêng: Khác với shared hosting, VPS và dedicated server không có giao diện quản lý sẵn có. SSH là cách duy nhất để vào server và làm bất kỳ thứ gì. Nếu đang cân nhắc nâng từ shared hosting lên VPS, đọc thêm VPS là gì để hiểu thêm về phần này trước khi quyết định.
Cần chạy lệnh hoặc script trực tiếp: Composer, WP-CLI, Git pull, cài Node.js, chạy cron job thủ công, xem error log thời gian thực. Những việc này không làm được qua cPanel hay giao diện web, phải vào server qua SSH.
Xử lý sự cố khẩn cấp: Khi website bị lỗi 500 do PHP crash, bị tấn công, hay bị thay đổi file trái phép, SSH cho phép xem log, kill process, khôi phục file nhanh hơn nhiều so với thao tác qua giao diện web. Trường hợp cần khôi phục từ backup, bài chuyển hosting không mất dữ liệu cũng dùng SSH trong một số bước.
Cài đặt và cấu hình phần mềm: Nginx, Apache, MySQL, Redis, Certbot cho SSL, tất cả đều cài qua SSH. Hosting dùng cPanel đã lo sẵn phần này, nhưng khi tự quản lý server thì SSH là nơi làm tất cả.
Xác thực mật khẩu và khoá SSH khác nhau ra sao
Để vào server qua SSH, bạn phải chứng minh danh tính. Có hai cách chính: xác thực bằng mật khẩu và xác thực bằng khoá SSH. Đây là chỗ nhiều người cài đặt sai ngay từ đầu.
Xác thực bằng mật khẩu là cách đơn giản và quen thuộc nhất: nhập username và password khi kết nối. Vấn đề là bot tự động quét internet liên tục để thử đoán username và password vào SSH. Hàng nghìn lần thử mỗi ngày là chuyện bình thường với bất kỳ server nào có cổng 22 mở ra ngoài. Nếu mật khẩu yếu hoặc dùng username phổ biến như “root” hay “admin”, sớm muộn cũng bị đoán trúng.
Xác thực bằng khoá SSH hoạt động theo cơ chế mật mã công khai. Bạn tạo một cặp khoá gồm khoá riêng (private key, giữ trên máy bạn, không bao giờ gửi đi) và khoá công khai (public key, đặt trên server). Khi kết nối, server dùng khoá công khai để kiểm tra xem bạn có khoá riêng tương ứng không, mà không cần bạn gửi khoá riêng qua đường truyền.

Vì sao khoá SSH an toàn hơn mật khẩu
Lý do chính không phải là khoá SSH “dài hơn” hay “phức tạp hơn” mật khẩu, mà là cơ chế xác thực khác hoàn toàn. Với mật khẩu, bạn gửi thứ bí mật (mật khẩu) qua đường truyền để server kiểm tra, nên mật khẩu có thể bị đánh cắp hoặc đoán mò. Với khoá SSH, bạn chứng minh mình có khoá riêng mà không cần gửi khoá riêng đó đi đâu cả.
Không thể brute-force khoá SSH theo nghĩa thực tế. Độ dài khoá RSA 4096-bit hay Ed25519 tương đương khoảng 100 chữ số ngẫu nhiên: máy tính nhanh nhất thế giới cần thời gian dài hơn tuổi vũ trụ để thử hết. Với mật khẩu, bot có thể thử hàng nghìn lần mỗi giây nếu server không có giới hạn.
Thêm vào đó, khoá SSH không bị đánh cắp qua phishing. Trang web giả mạo có thể lừa bạn nhập mật khẩu, nhưng không lấy được khoá riêng SSH vốn nằm trên máy bạn dưới dạng file.
Thiết lập khoá SSH thực ra không phức tạp như nhiều người nghĩ. Trên Linux và macOS, chạy ssh-keygen -t ed25519 trong terminal để tạo cặp khoá. Trên Windows, phần mềm PuTTYgen hoặc chính Windows Terminal đều làm được việc này. Sau đó copy nội dung file ~/.ssh/id_ed25519.pub (khoá công khai) vào file ~/.ssh/authorized_keys trên server là xong.
Những sai lầm phổ biến khi cài đặt SSH
Bốn sai lầm này hay xuất hiện cùng nhau trên các server mới cài đặt và chưa được hardening (tăng cường bảo mật) kỹ:

Giữ nguyên cổng 22 mặc định: Bot tự động biết cổng 22 là SSH và quét liên tục. Đổi sang cổng khác (ví dụ 2222 hoặc một số ngẫu nhiên trong khoảng 1024-65535) không ngăn được người thật sự muốn tấn công, nhưng loại bỏ phần lớn bot quét tự động, giảm đáng kể log rác trên server.
Chỉ dùng mật khẩu, không bật khoá SSH: Kết hợp lý tưởng là bật khoá SSH và tắt hoàn toàn đăng nhập bằng mật khẩu (sửa dòng PasswordAuthentication no trong /etc/ssh/sshd_config). Khi đó ngay cả mật khẩu đúng cũng không đăng nhập được, chỉ khoá SSH mới vào được.
Không giới hạn số lần đăng nhập sai: Phần mềm như fail2ban tự động chặn IP sau một số lần thử sai nhất định. Không cài fail2ban hay cấu hình tương tự là để bot thử mãi không bị chặn. Trên nhiều hosting panel, tính năng này có sẵn và cần bật lên.
Cho phép đăng nhập trực tiếp bằng tài khoản root: Tài khoản root có toàn quyền trên server. Tắt đăng nhập root qua SSH (sửa PermitRootLogin no) bắt buộc phải dùng tài khoản thường rồi nâng quyền khi cần bằng sudo. Cách này tạo thêm một lớp bảo vệ dù kẻ tấn công có lấy được thông tin đăng nhập của một tài khoản nào đó.
Khi nào cần SSH, khi nào FTP hoặc SFTP là đủ
SSH và SFTP không thay thế nhau mà bổ trợ cho nhau. Dùng đúng thứ cho đúng việc:

Nếu bạn chỉ cần đẩy file theme lên hosting, kéo file backup về máy, hay upload ảnh, SFTP là đủ. Tất cả phần mềm như FileZilla, Cyberduck, WinSCP đều làm được qua SFTP mà không cần hiểu SSH. Bài FTP là gì và bài SFTP là gì có hướng dẫn kết nối cụ thể qua FileZilla.
SSH bắt đầu cần thiết khi bạn muốn chạy lệnh trực tiếp trên server: cài Composer, chạy WP-CLI, pull code từ Git, xem error log theo thời gian thực, hay restart dịch vụ khi server bị treo. Với VPS và dedicated server, SSH là cách duy nhất để quản lý server nếu không có panel đi kèm.
Câu hỏi thường gặp về SSH
Shared hosting có cho dùng SSH không?
Tuỳ nhà cung cấp. Một số shared hosting hỗ trợ SSH với quyền hạn giới hạn (không phải root), có thể chạy một số lệnh cơ bản. Một số khác không hỗ trợ SSH vì lý do bảo mật nhiều người dùng chung server. Kiểm tra trang tính năng hoặc hỏi support của hosting để biết chính xác.
Mất khoá SSH thì làm thế nào?
Nếu mất file khoá riêng và không vào được server, cần dùng phương thức khôi phục khác của nhà cung cấp hosting: thường là console trực tiếp qua web hoặc khởi động lại server vào rescue mode. Sau khi vào được, tạo cặp khoá mới và cập nhật authorized_keys. Vì vậy, backup khoá SSH riêng sang ít nhất một nơi an toàn khác là việc cần làm ngay sau khi tạo.
Terminal trên Windows dùng được SSH không?
Được. Từ Windows 10 trở đi, OpenSSH đã có sẵn và có thể dùng lệnh ssh user@hostname thẳng trong Command Prompt hoặc PowerShell. Windows Terminal và WSL cũng hỗ trợ SSH đầy đủ. PuTTY vẫn là lựa chọn quen thuộc cho nhiều người nhưng không còn bắt buộc nữa.
SSH có bảo vệ được dữ liệu đang lưu trên server không?
Không. SSH bảo vệ kết nối khi truyền, không phải dữ liệu đang lưu trữ. File trên server vẫn cần được bảo vệ bằng quyền truy cập file, mã hoá ổ đĩa (nếu cần), và backup định kỳ. SSH chỉ giải quyết bài toán “ai được phép vào và kết nối có bị nghe lén không”, không giải quyết “file lưu trên server có an toàn không”.
