Tìm Hiểu Cách Cấu Hình SSH Key Trên CentOS: Tăng Cường Bảo Mật VPS

Tìm Hiểu Cách Cấu Hình SSH Key Trên CentOS

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:

Generating public/private rsa key pair.
Enter file in which to save the key (/your_home/.ssh/id_rsa):

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:

/home/your_home/.ssh/id_rsa already exists.
Overwrite (y/n)?

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

Your identification has been saved in /your_home/.ssh/id_rsa.
Your public key has been saved in /your_home/.ssh/id_rsa.pub.
The key fingerprint is:
a9:49:2e:2a:5e:33:3e:a9:de:4e:77:11:58:b6:90:26 username@remote_host
The key's randomart image is:
+--[ RSA 2048]----+
|     ..o         |
|   E o= .        |
|    o. o         |
|        ..       |
|      ..S        |
|     o o.        |
|   =o.+.         |
|. =++..          |
|o=++.            |
+-----------------+

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

The authenticity of host '203.0.113.1 (203.0.113.1)' can't be established.
ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe.
Are you sure you want to continue connecting (yes/no)? yes

Đ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

/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
username@203.0.113.1's password:

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

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'username@203.0.113.1'"
and check to make sure that only the key(s) you wanted were added.

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

The authenticity of host '203.0.113.1 (203.0.113.1)' can't be established.
ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe.
Are you sure you want to continue connecting (yes/no)? yes

Đ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

username@203.0.113.1's password:

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

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCqql6MzstZYh1TmWWv11q5O3pISj2ZFl9HgH1JLknLLx44+tXfJ7mIrKNxOOwxIxvcBF8PXSYvobFYEZjGIVCEAjrUzLiIxbyCoxVyle7Q+bqgZ8SeeM8wzytsY+dVGcBxF6N4JS+zVk5eMcV385gG3Y6ON3EG112n6d+SMXY0OEBIcO6x+PnUSGHrSgpBgX7Ks1r7xqFa7heJLLt2wWwkARptX7udSq05paBhcpB0pHtA1Rfz3K2B+ZVIpSDfki9UVKzT8JUmwW6NNzSgxUfQHGwnW7kj4jp4AT0VZk3ADw497M2G/12N0PPB5CnhHf7ovgy6nL1ikrygTKRFmNZISvAcywB9GVqNAVE+ZHDSCuURNsAInVzgYo9xgJDW8wUw2o8U77+xiFxgI5QSZX3Iq7YLMgeksaO4rBJEa54k8m5wEiEE1nUhLuJ0X/vh2xPff6SQ1BL/zkOhvJCACK6Vb15mDOeCSq54Cr7kvS46itMosi/uS66+PujOO+xt/2FWYepz6ZlN70bRly57Q06J+ZJoc9FfBCbCyYH7U/ASsmY095ywPsBo1XQ9PqhnN1/YOorJ068foQDNVpm146mUpILVxmq41Cj55YKHEazXGsdBIbXWhcrRf4G2fJLRcGUr9q8/lERo9oxRm5JFX6TCmj6kmiFqv+Ow9gI0x8GvaQ== sammy@host

Đă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

The authenticity of host '203.0.113.1 (203.0.113.1)' can't be established.
ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe.
Are you sure you want to continue connecting (yes/no)? yes

Đ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:

...
PasswordAuthentication no
...

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!

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *