Cách thiết lập SSH trên Linux: Hướng dẫn cài đặt và bảo mật hiệu quả

Bạn đang sở hữu một máy chủ Linux và cần một phương pháp an toàn để quản lý nó từ xa? Hay bạn là một lập trình viên, quản trị viên hệ thống muốn tìm kiếm giải pháp kết nối hiệu quả nhất? Giao thức SSH chính là câu trả lời bạn đang tìm kiếm. Trong thế giới số, việc quản lý server không chỉ giới hạn ở việc ngồi trước màn hình vật lý. Thay vào đó, chúng ta cần truy cập, cấu hình và bảo trì hệ thống từ bất kỳ đâu. SSH (Secure Shell) ra đời để giải quyết bài toán này, cung cấp một kênh giao tiếp mã hóa, an toàn giữa máy của bạn và máy chủ. Bài viết này sẽ là kim chỉ nam chi tiết, hướng dẫn bạn từ A-Z cách cài đặt, cấu hình và bảo mật SSH trên Linux, giúp bạn làm chủ công cụ mạnh mẽ này.

Giới thiệu về giao thức SSH và vai trò trong quản lý máy chủ Linux

SSH, hay Secure Shell, là một giao thức mạng cho phép bạn thực hiện các dịch vụ mạng một cách an toàn qua một mạng không an toàn. Hiểu đơn giản, nó tạo ra một “đường hầm” được mã hóa giữa máy tính của bạn (máy khách) và máy chủ Linux (máy chủ), đảm bảo mọi dữ liệu truyền đi, từ lệnh bạn gõ đến kết quả trả về, đều được bảo vệ khỏi những cặp mắt tò mò.

Tầm quan trọng của SSH trong quản lý máy chủ Linux là không thể bàn cãi. Trước khi có SSH, các giao thức như Telnet hay FTP được sử dụng phổ biến, nhưng chúng có một yếu điểm chết người: dữ liệu được truyền đi dưới dạng văn bản thuần, không mã hóa. Điều này có nghĩa là bất kỳ ai cũng có thể “nghe lén” trên mạng và đánh cắp thông tin nhạy cảm như tên người dùng và mật khẩu.

Hình minh họa

Việc không sử dụng SSH trong quản trị hệ thống hiện đại mang lại rủi ro bảo mật cực kỳ lớn. Bạn sẽ phải đối mặt với nguy cơ bị tấn công Man-in-the-Middle, bị đánh cắp thông tin đăng nhập và mất quyền kiểm soát hoàn toàn máy chủ. Hơn nữa, việc quản lý từ xa trở nên khó khăn và thiếu tin cậy.

Giải pháp ở đây chính là thiết lập và sử dụng SSH. Nó không chỉ giải quyết vấn đề bảo mật mà còn mang lại sự linh hoạt và hiệu quả vượt trội cho các quản trị viên hệ thống. Bằng cách sử dụng SSH, bạn có thể thực thi lệnh, quản lý file, chuyển tiếp cổng và thực hiện vô số tác vụ quản trị khác một cách an toàn.

Trong bài viết này, chúng ta sẽ cùng nhau đi qua từng bước: từ cài đặt OpenSSH server trên các bản phân phối Linux phổ biến, cấu hình các tham số cơ bản, tạo kết nối bằng mật khẩu và SSH key, thực hiện các lệnh quản lý từ xa, cho đến các biện pháp bảo mật nâng cao và cách xử lý sự cố thường gặp. Hãy cùng bắt đầu hành trình làm chủ SSH nhé!

Hướng dẫn cài đặt và cấu hình SSH server trên hệ điều hành Linux

Để bắt đầu sử dụng SSH, điều đầu tiên bạn cần làm là đảm bảo rằng SSH server đã được cài đặt và chạy trên máy chủ Linux của mình. Phần mềm SSH server phổ biến nhất hiện nay là OpenSSH, một dự án mã nguồn mở mạnh mẽ và đáng tin cậy.

Cài đặt OpenSSH Server trên Linux

Quá trình cài đặt OpenSSH khá đơn giản và có thể thực hiện thông qua trình quản lý gói của hệ điều hành. Tùy thuộc vào bản phân phối Linux bạn đang sử dụng, câu lệnh sẽ có một chút khác biệt.

Đối với Ubuntu hoặc Debian:
Bạn sẽ sử dụng trình quản lý gói APT (Advanced Package Tool). Hãy mở terminal và chạy các lệnh sau:

sudo apt update
sudo apt install openssh-server

Lệnh đầu tiên cập nhật danh sách gói của bạn, và lệnh thứ hai tiến hành cài đặt OpenSSH server.

Đối với CentOS hoặc RHEL:
Trên các hệ thống này, bạn sẽ dùng trình quản lý gói YUM hoặc DNF.

sudo yum install openssh-server # Đối với CentOS 7/RHEL 7
sudo dnf install openssh-server # Đối với CentOS 8/RHEL 8 và mới hơn

Sau khi cài đặt hoàn tất, dịch vụ SSH thường sẽ tự động khởi động. Tuy nhiên, để chắc chắn, bạn nên kiểm tra trạng thái của nó. Bạn có thể sử dụng lệnh systemctl:

sudo systemctl status sshd

Nếu dịch vụ đang hoạt động, bạn sẽ thấy trạng thái “active (running)” màu xanh. Nếu không, bạn có thể khởi động nó bằng lệnh sudo systemctl start sshd và kích hoạt để nó tự chạy mỗi khi khởi động lại máy chủ bằng lệnh sudo systemctl enable sshd.

Hình minh họa

Cấu hình file sshd_config cơ bản

Trái tim của việc cấu hình SSH server nằm ở file /etc/ssh/sshd_config. File này chứa tất cả các tham số điều khiển hành vi của dịch vụ SSH. Trước khi chỉnh sửa, bạn nên tạo một bản sao lưu để phòng trường hợp có lỗi xảy ra.

sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak

Bây giờ, hãy mở file này bằng một trình soạn thảo văn bản như nano hoặc vim:

sudo nano /etc/ssh/sshd_config

Dưới đây là một vài tham số quan trọng bạn cần quan tâm:

  • Port 22: Đây là cổng mặc định mà dịch vụ SSH lắng nghe. Vì là cổng mặc định, nó thường là mục tiêu của các cuộc tấn công tự động. Việc đổi sang một cổng khác (ví dụ: 2222) là một biện pháp bảo mật tốt mà chúng ta sẽ tìm hiểu kỹ hơn ở phần sau.
  • PermitRootLogin yes: Tham số này cho phép người dùng root đăng nhập trực tiếp qua SSH. Đây là một rủi ro bảo mật lớn. Bạn nên đặt thành no và sử dụng một tài khoản người dùng thường, sau đó dùng lệnh sudo để thực hiện các tác vụ cần quyền quản trị.
  • PasswordAuthentication yes: Cho phép xác thực bằng mật khẩu. Mặc dù tiện lợi, mật khẩu có thể bị tấn công brute-force. Phương pháp an toàn hơn là sử dụng SSH key và vô hiệu hóa xác thực mật khẩu bằng cách đặt giá trị này thành no.

Sau khi bạn đã thực hiện các thay đổi cần thiết trong file cấu hình, hãy lưu lại và thoát khỏi trình soạn thảo. Để các thay đổi có hiệu lực, bạn cần khởi động lại dịch vụ SSH:

sudo systemctl restart sshd

Bây giờ, SSH server của bạn đã được cài đặt và cấu hình cơ bản. Bước tiếp theo là tìm hiểu cách kết nối đến nó từ máy khách.

Cách tạo kết nối SSH từ máy khách tới máy chủ Linux

Sau khi đã có SSH server chạy trên máy chủ, giờ là lúc kết nối đến nó từ máy tính cá nhân của bạn (máy khách). Quá trình này có thể được thực hiện bằng nhiều cách, nhưng hai phương pháp phổ biến nhất là sử dụng mật khẩu và sử dụng SSH key.

Kết nối SSH cơ bản từ terminal

Đây là cách kết nối đơn giản và nhanh chóng nhất, phù hợp khi bạn mới bắt đầu hoặc chỉ cần truy cập tạm thời. Hầu hết các hệ điều hành dựa trên Unix (như macOS và Linux) đều có sẵn SSH client. Trên Windows 10 và 11, bạn cũng có thể sử dụng nó ngay từ Command Prompt hoặc PowerShell.

Cú pháp để kết nối rất dễ nhớ:

ssh ten_nguoi_dung@dia_chi_ip_may_chu

Trong đó:

  • ten_nguoi_dung: Là tên tài khoản người dùng trên máy chủ Linux mà bạn muốn đăng nhập.
  • dia_chi_ip_may_chu: Là địa chỉ IP public của máy chủ Linux.

Ví dụ, nếu người dùng của bạn là bmd và IP máy chủ là 192.168.1.100, bạn sẽ gõ:

ssh bmd@192.168.1.100

Lần đầu tiên kết nối, bạn sẽ nhận được một thông báo về “authenticity of host”. Hệ thống hỏi bạn có tin tưởng máy chủ này không. Gõ yes và nhấn Enter. Sau đó, bạn sẽ được yêu cầu nhập mật khẩu của người dùng bmd. Nếu mật khẩu chính xác, bạn sẽ được chào đón bằng dòng lệnh của máy chủ. Bạn đã kết nối thành công!

Hình minh họa

Sử dụng SSH Key để kết nối

Xác thực bằng mật khẩu tuy tiện lợi nhưng không phải là lựa chọn an toàn nhất. Mật khẩu có thể bị đoán, bị tấn công brute-force. SSH key cung cấp một phương thức xác thực an toàn và mạnh mẽ hơn nhiều.

SSH key hoạt động theo cặp: một private key (khóa riêng tư) và một public key (khóa công khai). Private key được lưu trữ an toàn trên máy khách của bạn và không bao giờ được chia sẻ. Public key được sao chép lên máy chủ và được dùng để xác minh danh tính của bạn.

Bước 1: Tạo cặp SSH Key
Trên máy khách, mở terminal và chạy lệnh ssh-keygen:

ssh-keygen -t rsa -b 4096

Lệnh này sẽ tạo một cặp key RSA với độ dài 4096 bit, rất mạnh mẽ. Bạn sẽ được hỏi nơi lưu key (thường là ~/.ssh/id_rsa, cứ nhấn Enter để chấp nhận mặc định) và yêu cầu đặt một passphrase. Passphrase là một lớp bảo mật bổ sung cho private key của bạn, rất khuyến khích sử dụng.

Hình minh họa

Bước 2: Sao chép Public Key lên máy chủ
Cách dễ nhất để làm điều này là sử dụng tiện ích ssh-copy-id. Cú pháp tương tự như khi kết nối SSH:

ssh-copy-id ten_nguoi_dung@dia_chi_ip_may_chu

Bạn sẽ được yêu cầu nhập mật khẩu của người dùng lần cuối. Lệnh này sẽ tự động sao chép public key (~/.ssh/id_rsa.pub) của bạn vào file ~/.ssh/authorized_keys trên máy chủ.

Bước 3: Kết nối bằng SSH Key
Từ bây giờ, khi bạn thực hiện lệnh ssh ten_nguoi_dung@dia_chi_ip_may_chu, hệ thống sẽ tự động sử dụng key để xác thực. Nếu bạn đã đặt passphrase, bạn sẽ được yêu cầu nhập nó. Bạn sẽ đăng nhập mà không cần mật khẩu của người dùng trên máy chủ.

Lợi ích của việc sử dụng key là rất lớn. Nó gần như không thể bị bẻ khóa bằng tấn công brute-force và giúp tự động hóa các tác vụ kết nối mà không cần nhập mật khẩu mỗi lần, tăng cả tính bảo mật và hiệu quả công việc.

Các lệnh SSH cơ bản để quản lý máy chủ từ xa

Khi đã kết nối thành công với máy chủ qua SSH, bạn có trong tay toàn bộ sức mạnh của dòng lệnh Linux để quản lý hệ thống từ xa. Mọi lệnh bạn gõ vào terminal của mình sẽ được thực thi trên máy chủ. Dưới đây là một số nhóm lệnh cơ bản và hữu ích nhất.

Thao tác file và thư mục qua SSH

Việc quản lý tệp tin và thư mục là một trong những tác vụ phổ biến nhất. Bạn có thể sử dụng các lệnh Linux quen thuộc để điều hướng hệ thống tệp, tạo, xóa, và di chuyển dữ liệu.

  • `ls`: Liệt kê các tệp và thư mục trong thư mục hiện tại. Thêm tùy chọn -la (ls -la) để xem chi tiết hơn, bao gồm cả các tệp ẩn và quyền truy cập.
  • `cd [thư mục]`: Thay đổi thư mục làm việc. Ví dụ, cd /var/www/html sẽ đưa bạn đến thư mục gốc của web server Apache hoặc Nginx.
  • `pwd`: Hiển thị đường dẫn đầy đủ của thư mục hiện tại.
  • `cp [nguồn] [đích]`: Sao chép tệp hoặc thư mục. Ví dụ: cp config.php config.bak.php.
  • `mv [nguồn] [đích]`: Di chuyển hoặc đổi tên tệp/thư mục. Ví dụ: mv old-name.txt new-name.txt.
  • `rm [tệp]`: Xóa một tệp. Hãy cẩn thận với lệnh này! Sử dụng tùy chọn -r (rm -r [thư mục]) để xóa một thư mục và toàn bộ nội dung bên trong nó.
  • `mkdir [tên thư mục]`: Tạo một thư mục mới.
  • `touch [tên tệp]`: Tạo một tệp trống mới.

Hình minh họa

Quản lý dịch vụ và tài nguyên hệ thống

Ngoài việc quản lý tệp, bạn còn cần theo dõi và điều khiển các dịch vụ đang chạy cũng như tài nguyên hệ thống. SSH cho phép bạn làm điều này một cách dễ dàng.

  • `systemctl`: Công cụ quản lý dịch vụ trên hầu hết các bản phân phối Linux hiện đại.
    • sudo systemctl status nginx: Kiểm tra trạng thái của dịch vụ Nginx.
    • sudo systemctl start apache2: Khởi động dịch vụ Apache.
    • sudo systemctl stop mysql: Dừng dịch vụ MySQL.
    • sudo systemctl restart sshd: Khởi động lại dịch vụ SSH.
    • sudo systemctl enable cron: Kích hoạt dịch vụ Cron để tự khởi động cùng hệ thống.
  • `top` hoặc `htop`: Hiển thị danh sách các tiến trình đang chạy và lượng tài nguyên (CPU, RAM) mà chúng đang sử dụng theo thời gian thực. htop là một phiên bản cải tiến, dễ nhìn hơn của top và có thể cần cài đặt thêm (sudo apt install htop).
  • `df -h`: Kiểm tra dung lượng trống trên các ổ đĩa. Tùy chọn -h (human-readable) giúp hiển thị kết quả dưới dạng GB, MB thay vì các khối byte khó đọc.
  • `free -h`: Xem thông tin về việc sử dụng bộ nhớ RAM và swap.
  • `journalctl -u sshd -f`: Theo dõi log của dịch vụ SSH trong thời gian thực, rất hữu ích để gỡ lỗi.

Với những lệnh này, bạn có thể thực hiện hầu hết các tác vụ quản trị cơ bản mà không cần phải tiếp xúc vật lý với máy chủ. Đây chính là sức mạnh của việc quản lý từ xa qua SSH.

Thiết lập bảo mật cho kết nối SSH

Cài đặt và sử dụng SSH là bước đầu tiên. Tuy nhiên, để thực sự an toàn, bạn cần áp dụng các biện pháp bảo mật để “gia cố” cho kết nối của mình. Một cấu hình SSH mặc định có thể tiềm ẩn những lỗ hổng mà kẻ tấn công có thể khai thác.

Sử dụng SSH key thay mật khẩu

Như đã đề cập, đây là biện pháp bảo mật quan trọng nhất bạn nên thực hiện. Sau khi đã thiết lập và xác nhận có thể đăng nhập bằng SSH key, bạn nên vô hiệu hóa hoàn toàn việc xác thực bằng mật khẩu. Điều này sẽ ngăn chặn các cuộc tấn công brute-force nhắm vào mật khẩu người dùng.

Để làm điều này, hãy mở lại file cấu hình SSH:

sudo nano /etc/ssh/sshd_config

Tìm đến dòng PasswordAuthentication và thay đổi giá trị của nó thành no:

PasswordAuthentication no

Ngoài ra, bạn cũng có thể tìm và đảm bảo các dòng sau được đặt thành no để tăng cường bảo mật:

ChallengeResponseAuthentication no
KerberosAuthentication no
GSSAPIAuthentication no

Lưu file và khởi động lại dịch vụ SSH để áp dụng thay đổi:

sudo systemctl restart sshd

Lưu ý quan trọng: Trước khi thực hiện bước này, hãy đảm bảo bạn đã đăng nhập thành công bằng SSH key ít nhất một lần. Nếu không, bạn có thể tự khóa mình khỏi máy chủ.

Hình minh họa

Đổi cổng SSH và cấu hình tường lửa

SSH mặc định chạy trên cổng 22. Đây là một thông tin công khai và các bot tấn công tự động luôn quét cổng này trên khắp internet. Bằng cách đổi sang một cổng khác ít phổ biến hơn (ví dụ: từ 1025 đến 65535), bạn có thể tránh được phần lớn các cuộc tấn công tự động này.

Bước 1: Đổi cổng trong file cấu hình
Mở file /etc/ssh/sshd_config và tìm đến dòng #Port 22. Bỏ dấu # ở đầu và thay số 22 bằng một số cổng bạn chọn, ví dụ 22022.

Port 22022

Bước 2: Cấu hình tường lửa
Trước khi khởi động lại SSH, bạn phải cho phép kết nối đến cổng mới này qua tường lửa. Nếu không, bạn sẽ bị chặn ngay lập tức.

Với UFW (Uncomplicated Firewall – thường dùng trên Ubuntu/Debian):

sudo ufw allow 22022/tcp

Với firewalld (thường dùng trên CentOS/RHEL):

sudo firewall-cmd --permanent --add-port=22022/tcp
sudo firewall-cmd --reload

Bước 3: Khởi động lại SSH
Bây giờ bạn có thể an toàn khởi động lại dịch vụ SSH:

sudo systemctl restart sshd

Từ giờ, để kết nối, bạn cần chỉ định cổng mới bằng tùy chọn -p:

ssh -p 22022 ten_nguoi_dung@dia_chi_ip_may_chu

Giới thiệu thêm các biện pháp bảo mật nâng cao

Để tăng cường bảo vệ, bạn có thể xem xét các công cụ và kỹ thuật sau:

  • Fail2Ban: Đây là một công cụ tuyệt vời giúp tự động chặn các địa chỉ IP có hành vi đáng ngờ, chẳng hạn như cố gắng đăng nhập sai nhiều lần. Fail2Ban sẽ giám sát log của SSH và tự động cập nhật quy tắc tường lửa để khóa các IP tấn công trong một khoảng thời gian nhất định.
  • Chặn IP theo quốc gia: Nếu bạn biết rằng máy chủ của mình chỉ nên được truy cập từ một số quốc gia nhất định, bạn có thể sử dụng các module của tường lửa để chặn toàn bộ lưu lượng truy cập từ các khu vực địa lý khác.
  • Sử dụng Bastion Host (Jump Host): Trong các hệ thống lớn, thay vì cho phép truy cập SSH trực tiếp vào tất cả các máy chủ, người ta thường thiết lập một máy chủ trung gian được bảo mật nghiêm ngặt gọi là Bastion Host. Bạn phải SSH vào máy chủ này trước, sau đó mới từ đó “nhảy” đến các máy chủ nội bộ khác.

Xử lý sự cố khi kết nối SSH không thành công

Đôi khi, bạn có thể gặp phải lỗi khi cố gắng kết nối SSH. Đừng lo lắng, hầu hết các sự cố đều có thể được chẩn đoán và khắc phục một cách có hệ thống. Dưới đây là các vấn đề phổ biến và cách giải quyết chúng.

Kiểm tra trạng thái dịch vụ SSH

Đây là việc đầu tiên bạn nên làm. Nếu dịch vụ SSH trên máy chủ không chạy, bạn sẽ không thể kết nối được. Hãy đăng nhập vào máy chủ qua một phương thức khác (nếu có, như console của nhà cung cấp VPS) và chạy lệnh:

sudo systemctl status sshd

Nếu dịch vụ không hoạt động (inactive), hãy khởi động nó:

sudo systemctl start sshd

Nếu có lỗi khi khởi động, hãy kiểm tra log để tìm nguyên nhân, thường là do lỗi cú pháp trong file /etc/ssh/sshd_config:

journalctl -u sshd -e

Hình minh họa

Giải quyết vấn đề kết nối bị từ chối hoặc timeout

Lỗi “Connection refused” hoặc “Connection timed out” là hai trong số những lỗi phổ biến nhất.

Connection refused (Kết nối bị từ chối): Lỗi này thường có nghĩa là yêu cầu kết nối của bạn đã đến được máy chủ, nhưng không có dịch vụ nào lắng nghe trên cổng đó. Nguyên nhân có thể là:

  • Dịch vụ SSH không chạy (kiểm tra như trên).
  • Bạn đang kết nối sai cổng. Nếu bạn đã đổi cổng SSH mặc định, hãy chắc chắn bạn đã sử dụng tùy chọn -p [số cổng] khi kết nối.
  • Tường lửa trên máy chủ đang chặn kết nối của bạn. Kiểm tra lại các quy tắc của ufw hoặc firewalld để đảm bảo cổng SSH đã được cho phép.

Connection timed out (Kết nối hết thời gian chờ): Lỗi này có nghĩa là máy khách của bạn không nhận được bất kỳ phản hồi nào từ máy chủ. Nguyên nhân có thể là:

  • Sai địa chỉ IP: Kiểm tra kỹ xem bạn đã nhập đúng địa chỉ IP của máy chủ chưa.
  • Vấn đề mạng: Có thể có sự cố mạng giữa bạn và máy chủ. Hãy thử ping dia_chi_ip_may_chu để xem máy chủ có phản hồi không.
  • Tường lửa ở phía mạng: Đôi khi không phải tường lửa trên máy chủ, mà là một tường lửa của nhà cung cấp mạng hoặc công ty đang chặn cổng SSH.

Xử lý lỗi xác thực, sai mật khẩu

Nếu bạn nhận được lỗi “Permission denied (publickey,password)”, điều này có nghĩa là kết nối đã được thiết lập, nhưng quá trình xác thực đã thất bại.

  • Nếu dùng mật khẩu: Hãy chắc chắn bạn đã nhập đúng tên người dùng và mật khẩu. Lưu ý rằng mật khẩu có phân biệt chữ hoa, chữ thường.
  • Nếu dùng SSH key: Đây là lỗi phổ biến khi cấu hình key.
    • Kiểm tra xem public key của bạn đã được thêm chính xác vào file ~/.ssh/authorized_keys trên máy chủ chưa.
    • Đảm bảo quyền của thư mục .ssh và file authorized_keys trên máy chủ là đúng. Thư mục .ssh phải có quyền 700 và file authorized_keys phải có quyền 600. Bạn có thể đặt lại chúng bằng lệnh: chmod 700 ~/.sshchmod 600 ~/.ssh/authorized_keys.
    • Nếu bạn đã vô hiệu hóa PasswordAuthentication trên máy chủ, bạn sẽ không thể đăng nhập bằng mật khẩu nữa, bắt buộc phải dùng key.

Bằng cách kiểm tra tuần tự các bước trên, bạn có thể nhanh chóng xác định và giải quyết hầu hết các sự cố kết nối SSH.

Các lưu ý và thực hành tốt nhất khi sử dụng SSH trên Linux

Để đảm bảo an toàn và hiệu quả lâu dài khi quản lý máy chủ qua SSH, việc tuân thủ các thực hành tốt nhất là vô cùng quan trọng. Đây là những nguyên tắc đã được cộng đồng kiểm chứng để giúp bạn giữ cho hệ thống của mình luôn vững chắc.

Hình minh họa

Luôn cập nhật OpenSSH mới nhất: Giống như bất kỳ phần mềm nào khác, OpenSSH có thể có những lỗ hổng bảo mật được phát hiện theo thời gian. Các nhà phát triển liên tục tung ra các bản vá. Hãy thường xuyên chạy lệnh sudo apt update && sudo apt upgrade (trên Debian/Ubuntu) hoặc sudo dnf upgrade (trên CentOS) để đảm bảo bạn đang sử dụng phiên bản mới nhất và an toàn nhất.

Tắt đăng nhập root qua SSH: Đây là một quy tắc vàng. Tài khoản root là mục tiêu hấp dẫn nhất đối với kẻ tấn công. Hãy luôn đăng nhập bằng một tài khoản người dùng thường, sau đó sử dụng lệnh sudo để thực hiện các tác vụ quản trị. Để làm điều này, hãy đặt PermitRootLogin no trong file sshd_config.

Sử dụng cặp key RSA hoặc ED25519 với passphrase: Không phải tất cả các loại key đều như nhau. RSA (với độ dài 4096 bit) là một lựa chọn mạnh mẽ và phổ biến. ED25519 là một thuật toán hiện đại hơn, cho hiệu suất tốt và độ an toàn tương đương. Quan trọng hơn, hãy luôn đặt passphrase cho private key của bạn. Nó giống như một lớp mật khẩu thứ hai, bảo vệ key của bạn ngay cả khi tệp private key bị đánh cắp.

Không bao giờ chia sẻ private key: Hãy coi tệp private key (id_rsa hoặc tương tự) như chìa khóa nhà của bạn. Không bao giờ gửi nó qua email, tin nhắn, hay tải nó lên bất kỳ đâu. Nó chỉ nên tồn tại trên những máy tính mà bạn tin tưởng và dùng để kết nối.

Theo dõi nhật ký kết nối: Hệ thống Linux ghi lại mọi nỗ lực đăng nhập (cả thành công và thất bại) vào file log, thường là /var/log/auth.log (trên Debian/Ubuntu) hoặc /var/log/secure (trên CentOS). Thỉnh thoảng, bạn nên kiểm tra file này để phát hiện các hoạt động bất thường, ví dụ như nhiều lần đăng nhập thất bại từ một địa chỉ IP lạ. Đây có thể là dấu hiệu của một cuộc tấn công đang diễn ra.

Kết luận

Qua bài viết này, chúng ta đã cùng nhau đi qua một hành trình toàn diện để làm chủ giao thức SSH trên hệ điều hành Linux. Từ việc hiểu rõ tầm quan trọng của một kênh kết nối an toàn, đến các bước thực hành chi tiết như cài đặt OpenSSH server, cấu hình các tham số quan trọng, và tạo kết nối bằng cả mật khẩu lẫn SSH key. Quan trọng hơn, bạn đã được trang bị những kiến thức thiết yếu để “gia cố” cho máy chủ của mình bằng cách thay đổi cổng mặc định, cấu hình tường lửa, và áp dụng các nguyên tắc bảo mật tốt nhất.

Việc thiết lập SSH đúng cách không chỉ là một kỹ năng kỹ thuật, mà còn là một bước đi cơ bản để đảm bảo sự an toàn và toàn vẹn cho tài sản số của bạn. Trong một thế giới ngày càng kết nối, khả năng quản lý máy chủ từ xa một cách hiệu quả và bảo mật là yếu tố sống còn.

Bây giờ, đừng ngần ngại! Hãy bắt tay vào thực hành ngay những gì bạn đã học. Hãy thử cài đặt, cấu hình, và bảo mật kết nối SSH cho máy chủ của riêng bạn. Trải nghiệm thực tế sẽ giúp bạn củng cố kiến thức và trở nên tự tin hơn trong việc quản trị hệ thống. Nếu bạn muốn tìm hiểu sâu hơn, hãy khám phá các chủ đề nâng cao như sử dụng Fail2Ban, cấu hình Bastion Host, hay tự động hóa tác vụ với Ansible qua SSH.

Đánh giá
Tác giả

Mạnh Đức

Có cao nhân từng nói rằng: "Kiến thức trên thế giới này đầy rẫy trên internet. Tôi chỉ là người lao công cần mẫn đem nó tới cho người cần mà thôi !"

Chia sẻ