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
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
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
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
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
Đ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
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
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
Đ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
:
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ộ:
Bạn sẽ thấy nội dung của khóa, trông giống như sau:
Output:
Đă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:
Tiếp theo, thêm nội dung của id_rsa.pub
vào cuối tệp 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:
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 đó:
(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.
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:
Output
:
Gõ 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:
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
:
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:
Mở một cửa sổ terminal mới và kiểm tra kết nối SSH:
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.