NỘI DUNG

Hosting tốc độ cao Vietnix - tốc độ tải trang trung bình dưới 1 giây
VPS siêu tốc Vietnix - trải nghiệm mượt mà, ổn định
20/04/2023
Lượt xem

Cách cài đặt SSH Keys trên Ubuntu 20.04

20/04/2023
13 phút đọc
Lượt xem

Đánh giá

5/5 - (108 bình chọn)

SSH hay còn gọi là secure shell là một giao thức mã hóa được sử dụng để quản trị và liên lạc với các máy chủ. Khi làm việc với máy chủ Ubuntu, có thể bạn sẽ dành nhiều thời gian trong một phiên terminal được kết nối với máy chủ thông qua SSH. Trong bài viết này, bạn sẽ được hướng dẫn cách cài đặt SSH Keys trên Ubuntu 20.04. Cùng theo dõi nhé.

Bước 1 – Tạo cặp khóa để bắt đầu cài đặt SSH Keys trên Ubuntu 20.04

Bước đầu tiên là tạo cặp khóa trên client (thông thường là máy tính của bạn):

ssh-keygen

Phiên bản mặc định gần đây của ssh-keygen sẽ tạo ra một cặp khóa RSA 3072 bit. Cặp khóa này đủ bảo mật cho bạn sử dụng. Bạn có thể tùy chọn chuyển vào cờ -b 4096 để tạo ra khóa 4096 bit lớn hơn.

Sau khi nhập lệnh trên, bạn sẽ thấy kết quả 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 chính hoặc bạn có thể chỉ định một đường dẫn khác thay thế.

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

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

Nếu bạn chọn ghi đè khóa, bạn sẽ không thể sử dụng khóa trước đó nữa. Hãy cẩn thận khi chọn yes. Nếu bạn chọn yes, khóa trước đó sẽ bị hủy và không thể khôi phục.

Sau đó, bạn sẽ thấy thông báo như sau:

Output Enter passphrase (empty for no passphrase):

Tại đây bạn có thể tùy chọn nhập một passphrase bảo vệ. Passphrase sẽ thêm một lớp bảo mật bổ sung để ngăn người dùng trái phép đăng nhập vào.

Bạn sẽ thấy một output tương tự 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:/hk7MJ5n5aiqdfTVUZr+2Qt+qCiS7BIm5Iv0dxrc3ks user@host The key's randomart image is: +----[RSA 3072]----+  |                           .|  |                         + |  |                        +  |  |   .                    o . |  |o            S       . o  |  |  +   o.  .oo. ..    .o|  |o = oooooEo+ ...o|  |..  o   *o+=.*+o....|  |     =+=ooB=o.... | +-----[SHA256]------+

Sau khi hoàn thành bước 1, bạn đã có một cặp khóa công khai và khóa riêng tư sử dụng để xác thực. Bước tiếp theo là đặt khóa công khai lên server để bạn có thể đăng nhập dựa trên xác thực khóa SSH.

Bước 2 – Sao chép khóa công khai đến Ubuntu Server của bạn

Cách nhanh nhất để sao chép khóa công khai đến máy chủ Ubuntu là sử dụng một tiện ích được gọi là ssh-copy-id. Nếu bạn không có ssh-copy-id trên client, bạn có thể sử dụng một trong hai phương pháp thay thế (sao chép thông qua SSH dựa trên mật khẩu hoặc sao chép khóa thủ công).

Sao chép khóa công khai bằng ssh-copy-id

Công cụ ssh-copy-id là công cụ mặc định trên nhiều hệ điều hành. Vì vậy bạn có thể lấy trên hệ thống local của mình. Để để thực hiện phương pháp này, bạn phải đã có quyền truy cập SSH dựa trên mật khẩu đến server của mình.

Để sử dụng tiện ích, bạn chỉ định máy chủ bạn muốn kết nối từ xa và tài khoản người dùng bạn có quyền truy cập SSH dựa trên mật khẩu. Khóa SSH công khai của bạn sẽ được sao chép đến tài khoản này.

Câu lệnh như sau:

ssh-copy-id username@remote_host

Bạn có thể sẽ nhận được 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

Thông báo này có nghĩa là máy tính của bạn không nhận ra máy chủ từ xa. Điều này thường 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 local của bạn để tìm khóa id_rsa.pub đã tạo trước đó. Khi tìm thấy khóa này, tiện ích sẽ yêu cầu bạn nhập mật khẩu tài khoản của 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 và nhấn ENTER. Bạn sẽ không thấy những gì bạn đang gõ vì đây là cách bảo mật. Tiện ích sẽ kết nối đến tài khoản trên máy chủ từ xa bằng mật khẩu bạn đã cung cấp. Sau đó, nội dung của khóa ~/.ssh/id_rsa.pub của bạn được sao chép vào một file trong thư mục ~/.ssh của tài khoản từ xa có tên authorized_keys.

Bạn sẽ thấy output như bên dưới:

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.

Ở bước này, khóa id_rsa.pub của bạn đã được tải lên tài khoản từ xa. Bạn có thể tiếp tục đến Bước 3.

Sao chép khóa công khai bằng SSH

Nếu bạn không có ssh-copy-id nhưng lại có quyền truy cập SSH dựa trên mật khẩu vào tài khoản trên máy chủ. Bạn có thể tải lên các khóa của mình bằng cách sử dụng phương pháp SSH truyền thống.

Sử dụng lệnh cat để đọc nội dung của khóa SSH công khai trên máy tính. Sau đó, chuyển nội dung đó thông qua một kết nối SSH đến máy chủ từ xa. Bên phía kia, bạn có thể đảm bảo thư mục ~/.ssh tồn tại và có các quyền đúng dưới tài khoản đang sử dụng.

Bạn có thể xuất nội dung đã truyền qua vào một file được gọi là authorized_keys trong thư mục này. Hãy sử dụng ký hiệu chuyển hướng >> để thêm nội dung thay vì ghi đè. Sử dụng chuyển hướng cho phép bạn thêm các khóa mà không hủy bỏ các khóa đã được thêm trướ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 một thông báo như dưới đây:

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

Máy tính của bạn không nhận ra máy chủ từ xa trong 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.

Sau đó, bạn sẽ được nhắc nhập mật khẩu 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 khóa id_rsa.pub của bạn sẽ được sao chép vào cuối file authorized_keys của tài khoản người dùng từ xa. Nếu thành công, hãy tiếp tục vào Bước 3.

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

Nếu bạn không có quyền truy cập vào SSH dựa trên mật khẩu đối với máy chủ, bạn có thể thực hiện sao chép thủ công. Nội dung của file id_rsa.pub của bạn sẽ được thêm vào file ~/.ssh/authorized_keys trên máy từ xa.

Đầu tiên, bạn cần hiển thị nội dung của khóa công khai id_rsa.pub bằng cách nhập lệnh này vào máy tính:

cat ~/.ssh/id_rsa.pub

Bạn sẽ thấy nội dung của khóa giống như thế này:

Output ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCqql6MzstZYh1TmWWv11q5O3pISj2ZFl9Hg

Sau đó, truy cập vào máy chủ từ xa bằng bất cứ phương pháp bạn có thể. Sau khi truy cập vào máy chủ từ xa, bạn phải đảm bảo thư mục ~/.ssh đã tồn tại. Nếu thư mục chưa tồn tại bạn hãy thực hiện lệnh dưới đây:

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. Bạn có thể thêm nội dung của file id_rsa.pub vào cuối file authorized_keys bằng lệnh này:

echo public_key_string >> ~/.ssh/authorized_keys

Trong lệnh trên, thay thế public_key_string bằng kết quả output của lệnh cat ~/.ssh/id_rsa.pub. Bạn sẽ lấy từ phần ssh-rsa AAAA....

Cuối cùng, bạn cần đảm bảo thư mục ~/.ssh và file authorized_keys có được thiết lập các quyền thích hợp:

chmod -R go= ~/.ssh

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

chown -R sammy:sammy ~/.ssh

Ở bài viết này sử dụng tên người dùng là sammy, tuy nhiên bạn cần thay thế tên người dùng tương ứng của bạn vào lệnh trên.

Sau khi thực hiện các bước trên, bạn có thể thử xác thực không cần mật khẩu với máy chủ Ubuntu.

Bước 3 — Xác thực vào máy chủ Ubuntu của bạn bằng khóa SSH

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

Quá trình đăng nhập cơ bản như nhau:

ssh username@remote_host

Nếu bạn sử dụng phương pháp cuối cùng ở bên trên và đây là lần đầu bạn kết nối với máy chủ, bạn có thể thấy output 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ục bộ của bạn không nhận ra máy chủ từ xa. Gõ “yes” và nhấn ENTER để tiếp tục.

Nếu bạn không cung cấp mật khẩu cho khóa riêng tư, bạn sẽ đăng nhập được ngay lập tức. Nếu đã cung cấp mật khẩu cho khóa riêng khi tạo khóa, bạn sẽ được nhắc nhập mật khẩu này. Sau khi xác thực, một phiên shell mới sẽ được mở với tài khoản được cấu hình trên máy chủ Ubuntu.

Khi xác thực dựa trên khóa đã thành công, trong bước 4, bạn sẽ được học cách bảo mật hệ thống bằng cách tắt xác thực mật khẩu.

Bước 4 — Vô hiệu hóa xác thực mật khẩu trên máy chủ

Nếu bạn đã đăng nhập vào tài khoản bằng cách sử dụng SSH thì bạn đã cấu hình xác thực SSH-key-based thành công cho tài khoản của mình. Tuy nhiên, cơ chế xác thực dựa trên mật khẩu vẫn hoạt động. Máy chủ của bạn vẫn có thể bị mở cho các cuộc tấn công bằng mật khẩu.

Trước khi hoàn thành phần này, hãy đảm bảo rằng bạn đã cấu hình xác thực SSH-key-based cho tài khoản root trên máy chủ. Hoặc bạn đã cấu hình xác thực SSH-key-based cho một tài khoản không phải root trên máy chủ với quyền sudo. Bước này sẽ khóa đăng nhập dựa trên mật khẩu. Vì vậy, bạn cần đảm bảo vẫn có thể truy cập quản trị.

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

sudo nano /etc/ssh/sshd_config

Trong file này, bạn hãy tìm một chỉ thị gọi là PasswordAuthentication. Dòng này có thể đã bị chú thích bằng dấu # ở đầu dòng. Hãy bỏ chú thích dòng đó bằng cách xóa dấu # và đặt giá trị là no. Khả năng đăng nhập qua SSH bằng mật khẩu tài khoản sẽ bị vô hiệu hóa:

... PasswordAuthentication no ...

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

sudo systemctl restart ssh

Hãy mở một terminal mới và kiểm tra xem dịch vụ SSH có hoạt động đúng không trước khi đóng phiên hiện tại của bạn:

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 làm việc hiện tại trên máy chủ.

Dịch vụ SSH trên máy chủ Ubuntu của bạn hiện chỉ phản hồi đối với xác thực dựa trên SSH-key. Đăng nhập bằng mật khẩu đã bị vô hiệu hóa.

Lời kết

Qua bài viết hướng dẫn về cách cài đặt SSH Keys trên Ubuntu 20.04 này, bạn đã học được cách cấu hình xác thực dựa trên SSH-key trên máy chủ, cho phép đăng nhập mà không cần cung cấp mật khẩu tài khoản. Hy vọng những thông tin chúng tôi cung cấp hữu ích đối với bạn. Nếu bạn có bất cứ thắc mắc gì, hãy để lại bình luận ở bên dưới bài viết này nhé.

THEO DÕI VÀ CẬP NHẬT CHỦ ĐỀ BẠN QUAN TÂM

Đăng ký ngay để nhận những thông tin mới nhất từ blog của chúng tôi. Đừng bỏ lỡ cơ hội truy cập kiến thức và tin tức hàng ngày

Chọn chủ đề :

Hưng Nguyễn

Co-Founder
tại

Kết nối với mình qua

Kết nối với mình qua

Theo dõi
Thông báo của
guest
0 Comments
Phản hồi nội tuyến
Xem tất cả bình luận

Tăng tốc độ website - Nâng tầm giá trị thương hiệu

Tăng tốc tải trang

95 điểm

Nâng cao trải nghiệm người dùng

Tăng 8% tỷ lệ chuyển đổi

Thúc đẩy SEO, Google Ads hiệu quả

Tăng tốc ngay

SẢN PHẨM NỔI BẬT

7 NGÀY DÙNG THỬ HOSTING

NẮM BẮT CƠ HỘI, THÀNH CÔNG DẪN LỐI

Cùng trải nghiệm dịch vụ hosting tốc độ cao được hơn 100,000 khách hàng sử dụng

ĐĂNG KÝ NHẬN TÀI LIỆU THÀNH CÔNG
Cảm ơn bạn đã đăng ký nhận tài liệu mới nhất từ Vietnix!
ĐÓNG

ĐĂNG KÝ DÙNG THỬ HOSTING

7 NGÀY MIỄN PHÍ

ĐĂNG KÝ DÙNG THỬ HOSTING

7 NGÀY MIỄN PHÍ

XÁC NHẬN ĐĂNG KÝ DÙNG THỬ THÀNH CÔNG
Cảm ơn bạn đã đăng ký thông tin thành công. Đội ngũ CSKH sẽ liên hệ trực tiếp để kích hoạt dịch vụ cho bạn nhanh nhất!
ĐÓNG