Cách Thiết Lập SSH Keys Trên Debian 11

cach thiet lap ssh keys tren debian 11

SSH (Secure Shell) là giao thứ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ủ Debian, rất có thể bạn sẽ dành phần lớn thời gian sử dụng phiên làm việc terminal được kết nối tới máy chủ qua SSH.

Trong hướng dẫn này, chúng ta sẽ tập trung vào việc thiết lập các SSH key cho một cài đặt Debian 11 “vanilla”. SSH key cung cấp một phương thức đăng nhập dễ dàng và an toàn, do đó rất được khuyến nghị cho mọi người dùng.

Bước 1 — Tạo bộ key RSA

Bước đầu tiên là tạo một bộ key trên máy khách (thường là máy tính của bạn):

ssh-keygen

Theo mặc định, lệnh ssh-keygen sẽ tạo ra một cặp key RSA 3072-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 ra key 4096-bit lớn hơn nếu cần).

Sau khi nhập lệnh, bạn sẽ thấy đầu ra sau:

Output:

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, có thể bạn sẽ thấy thông báo:

Output:

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

Cảnh 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 cũ nữa. Hãy cẩn thận khi trả lời “yes” vì đây là thao tác phá hủy không thể phục hồi.

Sau đó, bạn sẽ thấy lời nhắc sau:

Output:

Enter passphrase (empty for no passphrase):

Tại đây, bạn có thể nhập một passphrase an toàn – điều này rất được khuyến nghị vì nó thêm một lớp bảo mật bổ sung, ngăn chặn người dùng trái phép đăng nhập. Để tìm hiểu thêm về bảo mật, hãy tham khảo hướng dẫn “How To Configure SSH Key-Based Authentication on a Linux Server.”

Tiếp theo, bạn sẽ thấy đầu ra như sau:

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:
SHA256:5E2BtTN9FHPBNoRXAB/EdjtHNYOHzTBzG5qUv7S3hyM root@debian-suricata
The key's randomart image is:
+---[RSA 3072]----+
|         oo .O^XB|
|        .  +.BO%B|
|        . = .+B+o|
|       o o o . =.|
|        S .   . =|
|               o.|
|               .o|
|            E o..|
|             . ..|
+----[SHA256]-----+

Giờ đây, bạn đã có một cặp key (public và private) mà bạn có thể sử dụng để xác thực. Bước tiếp theo là đưa public key lên máy chủ để sử dụng phương thức đăng nhập dựa trên SSH key.

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

Cách nhanh nhất để sao chép public key lên máy chủ Debian là sử dụng tiện ích ssh-copy-id. Phương pháp này được khuyến nghị nếu tiện ích có sẵn trên máy khách của bạn. Nếu 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 dùng mật khẩu, hoặc sao chép thủ công).

2.1. Sao chép Public Key sử dụng ssh-copy-id

Tiện ích ssh-copy-id thường được cài sẵn trên nhiều hệ điều hành, do đó có thể máy của bạn đã có sẵn nó. Để sử dụng phương pháp này, bạn phải có quyền truy cập SSH bằng mật khẩu đến máy chủ.

Để sử dụng tiện ích, bạn chỉ cần chỉ định máy chủ từ xa và tài khoản người dùng mà bạn có quyền đăng nhập bằng mật khẩu. Đây chính là tài khoản sẽ nhận public SSH key của bạn.

Cú pháp:

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 sẽ xảy ra lần đầu tiên kết nối với máy chủ mới. Nhập “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 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 ý rằng ký tự nhập 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 với tài khoản trên máy chủ từ xa sử dụng mật khẩu bạn vừa nhập, sau đó sao chép nội dung file ~/.ssh/id_rsa.pub vào file authorized_keys trong thư mục ~/.ssh của tài khoản từ xa.

Bạn sẽ thấy đầu ra:

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.

Tại thời điểm này, public key id_rsa.pub đã được tải lên tài khoản từ xa. Bạn có thể chuyển sang bước 3.

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

Nếu bạn không có tiện ích ssh-copy-id nhưng vẫn có quyền truy cập SSH bằng mật khẩu, bạn có thể tải key lên theo cách thông thường.

Chúng ta sẽ dùng lệnh cat để đọc nội dung của public SSH key trên máy khách và chuyển nó qua kết nối SSH đến máy chủ từ xa.

Ở phía máy chủ, hãy đảm bảo rằng thư mục ~/.ssh tồn tại và có quyền hạn phù hợp đối với tài khoản bạn sử dụng. Sau đó, chúng ta sẽ chuyển nội dung được truyền qua vào file authorized_keys trong thư mục này bằng cách sử dụng ký hiệu chuyển hướng >> để thêm nội dung mà không ghi đè lên các key đã có.

Lệnh đầy đủ:

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

Tiếp theo, sẽ có lời nhắc 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 file id_rsa.pub sẽ được thêm vào cuối file authorized_keys của tài khoản từ xa. Nếu thành công, chuyển sang bước 3.

2.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, bạn sẽ phải thực hiện quá trình trên một cách thủ công. Bạn sẽ tự tay thêm nội dung file id_rsa.pub vào file ~/.ssh/authorized_keys trên máy chủ từ xa.

Để hiển thị nội dung của file id_rsa.pub trên máy khách, gõ:

cat ~/.ssh/id_rsa.pub

Bạn sẽ thấy nội dung của key, ví dụ:

Output:

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDgkLJ8d2gGEJCN7xdyVaDqk8qgeZqQ0MlfoPK3TzWI5dkG0WiZ16jrkiW/h6lhO9K1w89VDMnmNN9ULOWHrZMNs//Qyv/oN+FLIgK2CkKXRxTmbh/ZGnqOm3Zo2eU+QAmjb8hSsstQ3DiuGu8tbiWmsa3k3jKbWNWpXqY3Q88t+bM1DZrHwYzaIZ1BSA1ghqHCvIZqeP9IUL2l2DUfSCT9LXJEgMQhgjakJnzEGPgd5VHMR32rVrbIbbDzlyyoZ7SpCe5y0vYvbV2JKWI/8SEOmwehEHJ9RBZmciwc+1sdEcAJVMDujb9p5rX4hyvFpG0KGhZesB+/s7PdOa8zlIg4TZhXUHl4t1jpPC83Y9KEwS/Ni4dhaxlnr3T6l5hUX2cD+eWl1vVpogBqKNGBMrVR4dWs3Z4BVUf9exqTRRYOfgo0UckULqW5pmLW07JUuGo1kpFAxpDBPFWoPsg08CGRdEUS7ScRnMK1KdcH54kUZr0O88SZOsv9Zily/A5GyNM= demo@test

Sau đó, đăng nhập vào máy chủ từ xa bằng phương pháp nào bạn có thể. Khi đã có quyền truy cập, đảm bảo rằng thư mục ~/.ssh tồn tại:

mkdir -p ~/.ssh

Tiếp theo, tạo hoặc chỉnh sửa file authorized_keys trong thư mục này và thêm nội dung public key vào cuối file:

echo public_key_string >> ~/.ssh/authorized_keys

Trong lệnh trên, thay thế public_key_string bằng nội dung mà bạn nhận được từ lệnh cat ~/.ssh/id_rsa.pub – nó sẽ bắt đầu bằng ssh-rsa AAAA.....

Cuối cùng, đảm bảo rằng thư mục ~/.ssh và file authorized_keys có quyền hạn phù hợp:

chmod -R go= ~/.ssh

Nếu bạn đang sử dụng tài khoản root để thiết lập key cho một tài khoản người dùng, cũng cần đảm bảo rằng thư mục ~/.ssh thuộc về tài khoản đó, không phải root:

chown -R sammy:sammy ~/.ssh

Trong ví dụ này, tên tài khoản là sammy – bạn cần thay thế bằng tên tài khoản phù hợp.

Sau bước này, public key của bạn đã được đưa lên máy chủ, chuyển sang bước 3.

Bước 3 — Xác thực đến máy chủ Debian sử dụng SSH Keys

Nếu bạn đã hoàn tất thành công một trong các phương pháp trên, bạn sẽ có thể đăng nhập vào máy chủ từ xa mà không cần dùng mật khẩu của tài khoản.

Quy trình chung như sau:

ssh username@remote_host

Nếu đây là lần đầu tiên bạn kết nối tới máy chủ (đặc biệt nếu dùng phương pháp thủ công), 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

Nhập “yes” và nhấn ENTER. Nếu bạn không cung cấp passphrase cho private key, 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 nó (lưu ý rằng ký tự nhập sẽ không hiển thị vì lý do bảo mật). Sau khi xác thực, một phiên shell mới sẽ mở ra với tài khoản được cấu hình trên máy chủ Debian.

Nếu xác thực bằng key thành công, bạn có thể tiếp tục tìm hiểu cách khóa chặt hệ thống bằng cách vô hiệu hóa đăng nhập qua mật khẩu.

Bước 4 — Vô hiệu hóa đăng nhập bằng mật khẩu trên máy chủ

Nếu bạn đã đăng nhập thành công bằng SSH key mà không cần mật khẩu, bạn đã thiết lập xong phương thức đăng nhập dựa trên SSH key. Tuy nhiên, phương thức đăng nhập qua mật khẩu vẫn còn hoạt động, khiến máy chủ dễ bị tấn công brute-force.

Trước khi hoàn tất các bước dưới đây, hãy chắc chắn rằng bạn đã thiết lập đăng nhập SSH key cho tài khoản root hoặc, tốt nhất, cho một tài khoản không phải root có quyền sudo. Bước này sẽ khóa đăng nhập bằng mật khẩu, vì vậy điều quan trọng là đảm bảo bạn vẫn có quyền truy cập quản trị.

Sau khi xác nhận tài khoản từ xa của bạn có quyền quản trị, đăng nhập vào máy chủ bằng SSH key, dưới dạng root hoặc tài khoản có quyền sudo. Sau đó, mở file cấu hình của SSH daemon:

sudo nano /etc/ssh/sshd_config

Trong file này, tìm dòng có chỉ thị PasswordAuthentication. Dòng này có thể đang bị comment. Hãy bỏ comment và đặt giá trị là no để vô hiệu hóa đăng nhập qua mật khẩu:

/etc/ssh/sshd_config
...
PasswordAuthentication no
...

Lưu và đóng file khi hoàn tất bằng cách nhấn CTRL + X, sau đó Y để xác nhận lưu và cuối cùng nhấn ENTER để thoát nano. Để áp dụng các thay đổi, khởi động lại dịch vụ sshd:

sudo systemctl restart ssh

Để đảm bảo rằng dịch vụ SSH vẫn hoạt động bình thường, mở một cửa sổ terminal mới và thử đăng nhập:

ssh username@remote_host

Khi bạn đã xác nhận rằng dịch vụ SSH hoạt động đúng, bạn có thể đóng tất cả các phiên làm việc hiện tại. Giờ đây, SSH daemon trên máy chủ Debian của bạn chỉ chấp nhận đăng nhập qua SSH key, đăng nhập qua mật khẩu đã bị vô hiệu hóa thành công.

Kết luận

Bây giờ, bạn đã cấu hình thành công phương thức xác thực dựa trên SSH key trên máy chủ, cho phép bạn đăng nhập mà không cần nhập mật khẩu tài khoản. 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 hướng dẫn “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 *