SSH (Secure Shell) là một giao thức mã hóa an toàn, được sử dụng rộng rãi để quản trị và giao tiếp với các máy chủ từ xa. Đối với máy chủ CentOS, kết nối qua SSH giúp người quản trị hệ thống thực hiện các tác vụ quản lý, bảo trì và cấu hình một cách hiệu quả thông qua phiên làm việc terminal.
Chúng ta sẽ cùng nhau thiết lập SSH Keys cho máy chủ CentOS của bạn. SSH Keys là phương pháp đăng nhập trực tiếp và an toàn, sử dụng cặp khóa gồm public key và private key để xác thực người dùng mà không cần phải nhập mật khẩu mỗi lần truy cập. Việc sử dụng SSH Keys không chỉ tăng cường bảo mật bằng cách giảm thiểu nguy cơ bị tấn công brute-force, mà còn mang lại sự tiện lợi cho người dùng, cho phép truy cập máy chủ một cách nhanh chóng và an toàn.
Khám phá cách bảo mật VPS server với SSH Key trên CentOS! Bài viết này sẽ hướng dẫn chi tiết từng bước cấu hình, giúp bạn tăng cường an toàn cho máy chủ. Tìm hiểu thêm về quản trị VPS server hiệu quả tại chuyên mục VPS Server để tối ưu hóa hệ thống của bạn.
Tiếp theo, DataOnline sẽ cung cấp các bước cụ thể từ việc tạo cặp khóa SSH đến quá trình triển khai public key lên máy chủ CentOS. Qua đó, bạn sẽ nắm được quy trình cấu hình SSH Keys một cách toàn diện, giúp tối ưu hóa môi trường quản trị và đảm bảo hệ thống luôn được bảo vệ theo tiêu chuẩn an ninh cao. Đây là lựa chọn được khuyến nghị cho tất cả người dùng khi làm việc với máy chủ CentOS, nhằm duy trì một môi trường hoạt động ổn định và an toàn.
Bước 1 – Tạo cặp Key RSA
Bước đầu tiên là tạo một cặp key trên máy khách (thường là máy tính cá nhân của bạn):
ssh-keygen
Theo mặc định, lệnh ssh-keygen sẽ tạo ra một cặp key RSA với độ dài 2048-bit, đủ an toàn cho hầu hết các trường hợp sử dụng (bạn có thể tùy chọn truyền vào tham số -b 4096
để tạo key có kích thước 4096-bit).
Sau khi nhập lệnh, bạn sẽ thấy thông báo sau:
Nhấn ENTER để lưu cặp key vào thư mục con .ssh/
trong thư mục home của bạn, hoặc chỉ định một đường dẫn khác.
Nếu trước đó bạn đã tạo cặp SSH key, bạn có thể thấy thông báo:
Nếu bạn chọn ghi đè key trên đĩa, bạn sẽ không thể xác thực bằng key trước đó nữa. Hãy cẩn thận khi chọn yes vì đây là một quá trình phá hủy không thể phục hồi.
Tiếp theo, bạn sẽ thấy thông báo:
Output
Enter passphrase (empty for no passphrase):
Tại đây, bạn có thể nhập một passphrase an toàn (rất được khuyến nghị) để tăng thêm lớp bảo mật cho key, nhằm ngăn chặn người dùng trái phép đăng nhập.
Sau đó, bạn sẽ nhận được thông báo:
Output
Bây giờ, bạn đã có một Public Key và Private Key có thể được sử dụng để xác thực. Bước tiếp theo là đưa Public Key của bạn lên máy chủ để bạn có thể sử dụng phương thức xác thực dựa trên SSH Keys để đăng nhập.
Bước 2 – Sao chép Public Key lên máy chủ CentOS của bạn
Cách nhanh nhất để sao chép Public Key lên máy chủ CentOS là sử dụng tiện ích ssh-copy-id
. Phương pháp này được khuyến nghị nếu có sẵn. Nếu trên máy khách của bạn không có ssh-copy-id
, bạn có thể sử dụng một trong hai phương pháp thay thế dưới đây (sao chép qua SSH xác thực bằng mật khẩu hoặc sao chép thủ công key).
Sao chép Public Key sử dụng ssh-copy-id
Tiện ích ssh-copy-id
được tích hợp mặc định trong nhiều hệ điều hành, vì vậy bạn có thể đã có sẵn trên hệ thống của mình. Để phương pháp này hoạt động, bạn phải có quyền truy cập SSH bằng mật khẩu tới máy chủ.
Để sử dụng tiện ích này, bạn chỉ cần chỉ định máy chủ từ xa mà bạn muốn kết nối và tài khoản người dùng có quyền SSH bằng mật khẩu. Đây là tài khoản mà Public SSH Key của bạn sẽ được sao chép đến:
ssh-copy-id username@remote_host
Bạn có thể thấy thông báo sau:
Output
Điều này có nghĩa là máy tính của bạn chưa nhận diện được máy chủ từ xa. Điều này xảy ra khi bạn kết nối với một máy chủ mới lần đầu tiên. Gõ yes và nhấn ENTER để tiếp tục.
Tiếp theo, tiện ích sẽ quét tài khoản cục bộ của bạn để tìm key id_rsa.pub
mà bạn đã tạo trước đó. Khi tìm thấy, nó sẽ yêu cầu bạn nhập mật khẩu của tài khoản người dùng trên máy chủ từ xa:
Output
Nhập mật khẩu (lưu ý: khi gõ mật khẩu, ký tự sẽ không hiển thị vì lý do bảo mật) và nhấn ENTER. Tiện ích sẽ kết nối tới tài khoản trên máy chủ từ xa sử dụng mật khẩu bạn vừa cung cấp, sau đó sao chép nội dung của key ~/.ssh/id_rsa.pub
vào file ~/.ssh/authorized_keys
của tài khoản từ xa.
Bạn sẽ thấy thông báo:
Output
và kiểm tra xem chỉ có những key mà bạn mong muốn đã được thêm vào hay không.
Tại thời điểm này, Public Key (id_rsa.pub) của bạn đã được tải lên tài khoản từ xa. Bạn có thể chuyển sang bước 3.
Sao chép Public Key sử dụng SSH
Nếu bạn không có ssh-copy-id
nhưng có quyền truy cập SSH bằng mật khẩu tới một tài khoản trên máy chủ, bạn có thể tải key của mình lên bằng phương pháp SSH thông thường.
Chúng ta sẽ sử dụng lệnh cat
để đọc nội dung của Public SSH Key trên máy cục bộ và truyền nội dung đó qua một kết nối SSH tới máy chủ từ xa.
Ở phía máy chủ, chúng ta đảm bảo rằng thư mục ~/.ssh
tồn tại và có quyền phù hợp cho tài khoản đang sử dụng.
Sau đó, chúng ta sẽ đưa nội dung được truyền qua đó vào một file có tên authorized_keys
trong thư mục đó. Chúng ta dùng ký hiệu >>
để nối thêm nội dung mà không ghi đè file hiện có.
Lệnh đầy đủ sẽ như sau:
cat ~/.ssh/id_rsa.pub | ssh username@remote_host "mkdir -p ~/.ssh && touch ~/.ssh/authorized_keys && chmod -R go= ~/.ssh && cat >> ~/.ssh/authorized_keys"
Bạn có thể thấy thông báo:
Output
Điều này có nghĩa là máy tính cục bộ của bạn chưa nhận diện máy chủ từ xa (xảy ra khi kết nối lần đầu tới máy chủ mới). Gõ yes và nhấn ENTER.
Sau đó, bạn sẽ được yêu cầu nhập mật khẩu của tài khoản người dùng trên máy chủ từ xa:
Output
Sau khi nhập mật khẩu, nội dung của file id_rsa.pub
sẽ được sao chép vào cuối file authorized_keys
của tài khoản từ xa. Nếu quá trình này thành công, chuyển sang bước 3.
Sao chép Public Key thủ công
Nếu bạn không có quyền truy cập SSH bằng mật khẩu đến máy chủ, bạn sẽ phải thực hiện quá trình trên một cách thủ công.
Chúng ta sẽ sao chép thủ công nội dung của file id_rsa.pub
và thêm vào file ~/.ssh/authorized_keys
trên máy từ xa.
Để hiển thị nội dung của file id_rsa.pub
, nhập lệnh sau trên máy cục bộ:
cat ~/.ssh/id_rsa.pub
Bạn sẽ thấy nội dung của key, trông sẽ như sau:
Output
Đăng nhập vào máy chủ từ xa bằng phương thức mà bạn có sẵn.
Sau khi có quyền truy cập vào tài khoản trên máy chủ từ xa, hãy đảm bảo rằng thư mục ~/.ssh
tồn tại. Lệnh sau sẽ tạo thư mục nếu cần, hoặc không làm gì nếu nó đã tồn tại:
mkdir -p ~/.ssh
Giờ, bạn có thể tạo hoặc chỉnh sửa file authorized_keys
trong thư mục này. Bạn thêm nội dung của file id_rsa.pub
vào cuối file authorized_keys
(tạo mới nếu cần) bằng lệnh:
echo public_key_string >> ~/.ssh/authorized_keys
Trong lệnh trên, thay thế public_key_string
bằng kết quả đầu ra của lệnh cat ~/.ssh/id_rsa.pub
trên máy cục bộ. Nó sẽ bắt đầu bằng ssh-rsa AAAA....
Cuối cùng, hãy đảm bảo rằng thư mục ~/.ssh
và file authorized_keys
có quyền truy cập phù hợp:
chmod -R go= ~/.ssh
Lệnh trên sẽ loại bỏ tất cả quyền của “group” và “other” đối với thư mục ~/.ssh
theo chế độ đệ quy.
Nếu bạn đang sử dụng tài khoản root để thiết lập key cho tài khoản người dùng, hãy đảm bảo rằng thư mục ~/.ssh
thuộc về người dùng chứ không phải root:
chown -R sammy:sammy ~/.ssh
Trong hướng dẫn này, tài khoản người dùng được đặt tên là sammy
, nhưng bạn nên thay thế bằng tên tài khoản phù hợp.
Bây giờ, bạn có thể thử đăng nhập bằng xác thực dựa trên key vào máy chủ CentOS.
Bước 3 – Đăng nhập vào máy chủ CentOS sử dụng SSH Keys
Nếu bạn đã hoàn thành thành công một trong các phương pháp ở trên, giờ bạn có thể đăng nhập vào máy chủ từ xa mà không cần nhập mật khẩu.
Quá trình ban đầu vẫn giống như khi dùng xác thực bằng mật khẩu:
ssh username@remote_host
Nếu đây là lần đầu bạn kết nối tới máy chủ này (nếu bạn dùng phương pháp thủ công ở trên), bạn có thể thấy thông báo như sau:
Output
Điều này có nghĩa là máy tính của bạn chưa nhận diện máy chủ từ xa. Gõ yes và nhấn ENTER để tiếp tục.
Nếu bạn không cung cấp passphrase khi tạo cặp key ở bước 1, bạn sẽ được đăng nhập ngay lập tức. Nếu có passphrase, bạn sẽ được yêu cầu nhập ngay bây giờ. Sau khi xác thực, một phiên shell mới sẽ mở ra cho bạn với tài khoản được cấu hình trên máy chủ CentOS.
Nếu xác thực bằng SSH key thành công, chuyển sang bước 4 để tăng cường bảo mật hệ thống bằng cách vô hiệu hóa xác thực bằng mật khẩu.
Bước 4 – Vô hiệu hóa xác thực bằng mật khẩu trên máy chủ của bạn
Nếu bạn đã đăng nhập thành công vào tài khoản của mình bằng SSH mà không cần mật khẩu, nghĩa là bạn đã cấu hình xác thực bằng SSH key cho tài khoản của mình. Tuy nhiên, cơ chế xác thực bằng mật khẩu vẫn còn hoạt động, đồng nghĩa với việc máy chủ của bạn vẫn dễ bị tấn công brute-force.
Trước khi hoàn thành các bước trong phần này, hãy chắc chắn rằng bạn đã cấu hình xác thực bằng SSH key cho tài khoản root trên máy chủ này, hoặc tốt hơn là đã cấu hình cho một tài khoản không phải root có quyền sudo. Bước này sẽ khóa việc đăng nhập qua mật khẩu, do đó việc đảm bảo rằng bạn vẫn có thể truy cập với quyền quản trị là rất quan trọng.
Sau khi xác nhận rằng tài khoản từ xa của bạn có quyền quản trị, đăng nhập vào máy chủ từ xa bằng SSH key, có thể là với tài khoản root hoặc tài khoản có quyền sudo. Sau đó, mở file cấu hình của SSH daemon:
sudo vi /etc/ssh/sshd_config
Trong file này, tìm dòng có directive tên PasswordAuthentication
. Dòng này có thể đang bị comment (được đánh dấu bằng ký hiệu #). Nhấn i
để chuyển vi vào chế độ chèn, sau đó bỏ comment dòng đó và đặt giá trị thành no
. Việc này sẽ vô hiệu hóa khả năng đăng nhập qua SSH bằng mật khẩu:
Khi bạn hoàn tất chỉnh sửa, nhấn ESC và sau đó gõ :wq
để lưu các thay đổi và thoát khỏi vi. Để áp dụng các thay đổi, chúng ta cần khởi động lại dịch vụ sshd:
sudo systemctl restart sshd
Để đề phòng, mở một cửa sổ terminal mới và kiểm tra xem dịch vụ SSH có hoạt động bình thường không trước khi đóng phiên hiện tại:
ssh username@remote_host
Khi bạn đã xác minh được rằng dịch vụ SSH vẫn hoạt động đúng, bạn có thể đóng tất cả các phiên kết nối hiện có.
Bây giờ, SSH daemon trên máy chủ CentOS của bạn chỉ phản hồi với SSH key. Xác thực bằng mật khẩu đã được vô hiệu hóa thành công.
Kết luận
Bây giờ, bạn đã hoàn tất việc cấu hình xác thực bằng SSH key trên máy chủ, cho phép đăng nhập an toàn mà không cần nhập mật khẩu tài khoản. Điều này không chỉ nâng cao bảo mật mà còn giúp tối ưu hóa trải nghiệm quản trị từ xa của bạn.
Nếu bạn muốn tìm hiểu sâu hơn về cách làm việc với SSH, bao gồm các kỹ thuật bảo mật nâng cao, cách quản trị từ xa hiệu quả và các mẹo tối ưu hệ thống, hãy tham khảo các hướng dẫn chuyên sâu như Hướng dẫn SSH Essentials của chúng tôi.
Sau khi cấu hình SSH Key, bạn đã sẵn sàng bảo vệ máy chủ! Nếu đang tìm kiếm VPS phù hợp, tham khảo chuyên mục Giá thuê VPS để so sánh các gói dịch vụ. Tìm hiểu giá thuê VPS tốt nhất, đáp ứng nhu cầu từ cá nhân đến doanh nghiệp, ngay hôm nay!