Cách cài đặt SSH Keys trên Debian 10 | Sử dụng bộ Public Key, Private Key trên Debian 10

SSH Keys trên Debian 10

SSH, hay secure shell, là một 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ủ Debian, khả năng cao bạn sẽ dành phần lớn thời gian trong phiên làm việc terminal kết nối đến máy chủ qua SSH.

Trong tài liệu này, DataOnline sẽ tập trung vào việc thiết lập SSH Keys cho một cài đặt Debian 10 nguyên bản. SSH Keys cung cấp một cách đăng nhập dễ dàng và bảo mật cho máy chủ của bạn, do đó được khuyến nghị sử dụng cho tất cả người dùng.

Bước 1 – Tạo bộ khóa RSA

Bước đầu tiên là tạo một cặp khóa 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 khóa RSA 2048-bit, đủ bảo mật cho hầu hết các trường hợp sử dụng (bạn có thể tùy chọn truyền thêm tham số -b 4096 để tạo một khóa 4096-bit lớn hơn).

Sau khi nhập lệnh, bạn sẽ thấy đầu ra như 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 khóa vào thư mục con .ssh/ trong thư mục home của bạn, hoặc chỉ định đường dẫn thay thế.

Nếu trước đó bạn đã tạo một cặp SSH Key, bạn có thể thấy thông báo như sau:

Output

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

Cảnh báo: Nếu bạn chọn ghi đè lên khóa đã có, bạn sẽ không thể xác thực bằng khóa cũ nữa. Hãy cẩn thận khi chọn “yes”, vì đây là quá trình phá hủy không thể đảo ngược.

Sau đó, 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 (khuyến nghị nên có) để tăng thêm lớp bảo mật, nhằm ngăn chặn người dùng không được phép đăng nhập. Để tìm hiểu thêm về bảo mật, hãy xem hướng dẫn của chúng tôi về Cách Cấu Hình Xác Thực Dựa Trên SSH Key Trên Máy Chủ Linux.

Tiếp theo, bạn sẽ thấy đầu ra 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:
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=++.            |
+-----------------+

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

Bước 2 – Sao chép Public Key sang máy chủ Debian

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

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

Công cụ ssh-copy-id được cài sẵn trong nhiều hệ điều hành, vì vậy có thể máy tính của bạn đã có sẵ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 vào máy chủ của mình.

Để sử dụng tiện ích, 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 mà bạn có quyền truy cập 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 vào.

Cú pháp là:

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 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 file id_rsa.pub mà bạn đã tạo. Khi tìm thấy, nó sẽ 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

/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 phím bấm của bạn 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 đến 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 đó, nó sẽ 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 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ỉ những SSH key mà bạn mong muốn đã được thêm vào hay chưa.

Ở điểm này, file 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 vào máy chủ, bạn có thể tải khóa lên bằng cách sử dụng phương pháp SSH truyền thống.

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

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

Sau đó, chúng ta sẽ chuyển nội dung được truyền qua vào file có tên authorized_keys trong thư mục đó. Sử dụng ký hiệu chuyển hướng >> để thêm nội dung mà không ghi đè lên các khóa đã 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. Lần đầu kết nối đến 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ủ:

Output

username@203.0.113.1's password:

Nhập mật khẩu và sau đó nội dung của 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.

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 vào máy chủ, bạn sẽ phải thực hiện quá trình trên theo cách thủ công.

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

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

cat ~/.ssh/id_rsa.pub

Bạn sẽ thấy nội dung của khóa, trông sẽ 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== demo@test

Sau khi sao chép khóa công khai, hãy truy cập vào máy chủ từ xa bằng phương pháp có sẵn.

Khi đã 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 đã tồn tại:

mkdir -p ~/.ssh

Bây giờ, bạn có thể tạo hoặc chỉnh sửa file authorized_keys trong thư mục này. Hãy thêm nội dung của file id_rsa.pub vào cuối file authorized_keys (nếu file chưa có, nó sẽ được tạo mới) bằng lệnh:

echo public_key_string >> ~/.ssh/authorized_keys

Trong lệnh trên, thay thế public_key_string bằng nội dung đầu ra từ lệnh cat ~/.ssh/id_rsa.pub mà bạn đã chạy trên máy cục bộ. Nội dung này sẽ bắt đầu với 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 thích hợp:

chmod -R go= ~/.ssh

Lệnh này sẽ loại bỏ quyền “group” và “other” cho thư mục ~/.ssh theo cách đệ quy. Nếu bạn đang sử dụng tài khoản root để thiết lập khóa cho tài khoản người dùng, điều quan trọng là thư mục ~/.ssh phải thuộc về tài khoản người dùng đó chứ không phải root:

chown -R sammy:sammy ~/.ssh

Trong hướng dẫn này, tên người dùng của chúng ta là sammy, nhưng bạn hãy thay thế bằng tên tài khoản phù hợp của mình.

Bây giờ, bạn có thể thử đăng nhập không cần mật khẩu vào máy chủ Debian.

Bước 3 – Xác thực đăng nhập vào máy chủ Debian sử dụng SSH Keys

Nếu bạn đã hoàn thành thành công một trong những 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 nhập mật khẩu cho tài khoản đó.

Quá trình cơ bản vẫn 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 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. Hãy gõ “yes” và nhấn ENTER để tiếp tục.

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 bạn đã cung cấp passphrase khi tạo khóa, bạn sẽ được yêu cầu nhập passphrase (lưu ý rằng phím bấm sẽ không hiển thị trên terminal vì lý do bảo mật). Sau khi xác thực thành công, một phiên shell mới sẽ được mở với tài khoản đã cấu hình trên máy chủ Debian.

Nếu việc xác thực bằng SSH Key thành công, bạn có thể chuyển sang bước tiếp theo để tăng cường bảo mật hệ thống bằng cách vô hiệu hóa đăng nhập bằng 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 vào tài khoản mà không cần mật khẩu bằng SSH Key, tức là bạn đã cấu hình xác thực dựa trên SSH Key thành công cho tài khoản đó. 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 có nguy cơ 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 SSH Key cho tài khoản root trên máy chủ hoặc, tốt hơn, cho một tài khoản không phải root nhưng có quyền sudo. Bước này sẽ khóa phương thức đă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à điều vô cùng 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ủ bằng SSH Key, dưới quyền root hoặc tài khoản có quyền sudo. Sau đó, mở file cấu hình của daemon SSH:

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ị 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
...

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

sudo systemctl restart ssh

Để đề phòng, mở một cửa sổ terminal mới và kiểm tra dịch vụ SSH có hoạt động đúng không trước khi đóng phiên đăng nhập hiện tại:

ssh username@remote_host

Sau khi xác nhận dịch vụ SSH hoạt động bình thường, bạn có thể đóng tất cả các phiên kết nối hiện tại.

Daemon SSH trên máy chủ Debian giờ đây chỉ chấp nhận kết nối qua SSH Keys. Việc đăng nhập 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 Keys trên máy chủ, cho phép đăng nhập an toàn mà không cần phải nhập mật khẩu cho tài khoản. Việc áp dụng SSH Keys không chỉ nâng cao bảo mật hệ thống 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 và khám phá thêm các kỹ thuật quản trị nâng cao, hãy tham khảo các tài liệu Hướng Dẫn Cơ Bản Về SSH của chúng tôi.

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