Tìm hiểu cách thiết lập SSH keys trên Rocky Linux 9

SSH keys Rocky Linux 9

SSH, hay secure shell, là giao thức được mã hóa dùng để quản trị và giao tiếp với các máy chủ. Khi làm việc với máy chủ Rocky Linux, có khả năng bạn sẽ dành phần lớn thời gian trong phiên terminal kết nối qua SSH.

Trong hướng dẫn này, chúng ta sẽ tập trung vào việc thiết lập SSH keys cho máy chủ Rocky Linux 9. SSH keys cung cấp một phương pháp đăng nhập đơn giản và an toàn, được khuyến nghị cho mọi người dùng.

Bước 1 — Tạo cặp RSA key

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 một cặp RSA key 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ể truyền thêm tham số -b 4096 để tạo key 4096-bit).

Sau khi nhập lệnh, bạn sẽ thấy thông báo sau:

Ouput

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 đườ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:

Ouput

/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 cũ được nữa. Hãy cẩn thận khi chọn yes vì quá trình này không thể phục hồi.

Tiếp theo, bạn sẽ thấy thông báo:

Ouput

Enter passphrase (empty for no passphrase):

Tại đây, bạn có thể nhập passphrase an toàn (được khuyến nghị cao) để thêm một 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ẽ thấy thông báo:

Ouput

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 để xác thực. Bước tiếp theo là đưa Public Key lên máy chủ để sử dụng xác thực bằng SSH key.

Bước 2 — Sao chép Public Key lên máy chủ Rocky Linux

Cách nhanh nhất để sao chép Public Key lên máy chủ Rocky Linux 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 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 thường đượ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 máy của mình. Để phương pháp này hoạt động, bạn cần có quyền truy cập SSH bằng mật khẩu đến 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:

ssh-copy-id username@remote_host

Bạn có thể thấy thông báo sau:

Ouput

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. Đây là lần đầu tiên bạn kết nối đến một máy chủ mới. 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. 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:

Ouput

/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 nhập 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 bằng mật khẩu bạn vừa cung cấp, sau đó sao chép nội dung của file ~/.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:

Ouput

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'username@203.0.113.1'"

và kiểm tra xem chỉ có những key bạn mong muốn đã được thêm vào hay không.

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 đến tài khoản trên máy chủ, bạn có thể sao chép key bằng phương pháp SSH thông thường.

Sao chép Public Key sử dụng SSH

Bạn có thể dùng lệnh cat để đọc nội dung của Public SSH key trên máy tính cục bộ và truyền nội dung đó qua kết nối SSH tới máy chủ từ xa.

Ở phía máy chủ, hãy đảm bảo thư mục ~/.ssh tồn tại và có quyền truy cập phù hợp cho tài khoản đang sử dụng.

Sau đó, bạn sẽ dùng lệnh sau để chuyển nội dung vào file authorized_keys (dùng ký hiệu >> để nối thêm nội dung):

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:

Ouput

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 không nhận diện được máy chủ từ xa. Điều này sẽ xảy ra khi bạn kết nối lần đầu tiên với một máy chủ mới. Gõ yes và nhấn ENTER để tiếp tục.

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 từ xa:

Output:

username@203.0.113.1's password:

Sau khi nhập mật khẩu, nội dung của khóa id_rsa.pub sẽ được sao chép vào cuối tệp authorized_keys trong tài khoản của người dùng từ xa. Tiếp tục đến Bước 3 nếu thao tác này thành công.

Sao chép khóa công khai theo cách thủ công

Nếu bạn không thể truy cập máy chủ bằng mật khẩu qua SSH, bạn sẽ phải hoàn thành quá trình trên theo cách thủ công.

Chúng ta sẽ thêm nội dung của tệp id_rsa.pub vào tệp ~/.ssh/authorized_keys trên máy từ xa theo cách thủ công.

Để hiển thị nội dung của khóa id_rsa.pub, hãy chạy lệnh sau trên máy tính cục bộ:

cat ~/.ssh/id_rsa.pub

Bạn sẽ thấy nội dung của khóa, trông giống 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 bạn có sẵn.

Sau khi truy cập vào tài khoản trên máy chủ từ xa, đảm bảo rằng thư mục ~/.ssh tồn tại bằng cách chạy:

mkdir -p ~/.ssh

Tiếp theo, thêm nội dung của id_rsa.pub vào cuối tệp authorized_keys:

echo public_key_string >> ~/.ssh/authorized_keys

Thay public_key_string bằng nội dung đầu ra của lệnh cat ~/.ssh/id_rsa.pub.

Sau đó, đảm bảo rằng thư mục ~/.ssh và tệp authorized_keys có quyền chính xác:

chmod -R go= ~/.ssh

Lệnh này sẽ xóa tất cả quyền truy cập của nhóm (group) và những người khác (other) vào thư mục ~/.ssh.

Nếu bạn sử dụng tài khoản root để thiết lập khóa SSH cho một người dùng khác, hãy đảm bảo rằng thư mục ~/.ssh thuộc về người dùng đó:

chown -R sammy:sammy ~/.ssh

(Thay sammy bằng tên người dùng thực tế của bạn.)

Giờ đây, bạn có thể thử xác thực bằng SSH với máy chủ Rocky Linux.

SSH keys Rocky Linux 9

Bước 3 — Đăng nhập vào máy chủ Rocky Linux bằng SSH Key

Nếu bạn đã hoàn thành một trong các phương pháp trên, bây 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.

Sử dụng lệnh SSH thông thường để đăng nhập:

ssh username@remote_host

Nếu đây là lần đầu tiên kết nối với máy chủ này, 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

yes và nhấn ENTER để tiếp tục.

Nếu bạn không đặt mật khẩu cho khóa SSH khi tạo, bạn sẽ được đăng nhập ngay lập tức. Nếu có, bạn sẽ được yêu cầu nhập mật khẩu của khóa SSH. Sau khi xác thực, bạn sẽ có một phiên SSH mới trên máy chủ Rocky Linux.

Nếu xác thực bằng khóa SSH thành công, bạn có thể tiến hành bảo mật hệ thống hơn bằng cách vô hiệu hóa xác thực bằng mật khẩu.

Bước 4 — Tắt xác thực bằng mật khẩu trên máy chủ

Nếu bạn có thể đăng nhập vào tài khoản của mình bằng SSH mà không cần mật khẩu, điều đó có nghĩa là bạn đã cấu hình thành công xác thực dựa trên 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 đang hoạt động, đồng nghĩa với việc máy chủ của bạn vẫn có thể bị tấn công brute-force.

Trước khi thực hiện các bước trong phần này, hãy đảm bảo 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à cho một tài khoản không phải root nhưng có quyền sudo. Bước này sẽ vô hiệu hóa đăng nhập bằng mật khẩu, vì vậy việc đảm bảo rằng bạn vẫn có thể truy cập 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ị, hãy đăng nhập vào máy chủ từ xa bằng SSH-key, dưới quyền root hoặc tài khoản có quyền sudo. Sau đó, mở tệp cấu hình của SSH daemon:

sudo vi /etc/ssh/sshd_config

Tìm dòng PasswordAuthentication. Nếu dòng này bị chú thích bằng dấu #, hãy bỏ dấu # và đặt giá trị thành no:

...
PasswordAuthentication no
...

Lưu thay đổi bằng cách nhấn ESC, sau đó nhập :wq và nhấn ENTER.

Để áp dụng thay đổi, khởi động lại dịch vụ SSH:

sudo systemctl restart sshd

Mở một cửa sổ terminal mới và kiểm tra kết nối SSH:

ssh username@remote_host

Nếu bạn vẫn có thể kết nối, bạn có thể đóng tất cả các phiên SSH hiện tại một cách an toàn.

Bây giờ, máy chủ Rocky Linux của bạn chỉ chấp nhận xác thực bằng SSH Key, còn xác thực bằng mật khẩu đã bị vô hiệu hóa thành công.

Kết luận

Bây giờ bạn đã thiết lập xác thực bằng SSH Key trên máy chủ của mình, cho phép bạn đăng nhập mà không cần nhập mật khẩu.

Nếu bạn muốn tìm hiểu thêm về cách làm việc với SSH, hãy tham khảo tài liệu SSH Essentials Guide.

Để 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 *