Trước khi bắt đầu
SSH, hoặc secure shell, là một giao thức mã hóa được sử dụng để quản trị và giao tiếp với máy chủ. Khi làm việc với một máy chủ Linux, có khả năng bạn sẽ dành phần lớn thời gian trong một phiên terminal kết nối với máy chủ của bạn thông qua SSH.
Trong hướng dẫn này, chúng tôi sẽ tập trung vào việc thiết lập khóa SSH cho phiên bản Ubuntu 22.04. Khóa SSH cung cấp một cách an toàn để đăng nhập vào máy chủ của bạn và được khuyến nghị cho tất cả người dùng.
Đảm bảo rằng bạn có quyền truy cập sudo vào máy chủ Linux vì các lệnh được sử dụng trong hướng dẫn này yêu cầu đặc quyền root.
Trong hướng dẫn này chúng tôi sử dụng phần mềm PuTTy trên Windows để tạo cặp khóa Public Key và Private Key. Nếu bạn sử dụng Linux để tạo cặp khóa vui lòng xem hướng dẫn tại đây.
Bước 1: Tạo cặp khóa Private Key và Public Key
Các loại Khóa
- RSA – Đây là một trong những loại khóa SSH phổ biến nhất. Nó sử dụng phương pháp mã hóa không đối xứng, có nghĩa là nó cho phép cả mã hóa và giải mã bằng cách sử dụng các khóa riêng biệt nhưng có mối quan hệ toán học. RSA hỗ trợ các độ dài khác nhau bao gồm 2048-bit hoặc 3072-bit.
- DSA – Digital Signature Algorithm (DSA) là một loại mã hóa không đối xứng khác có thể được sử dụng để tạo khóa SSH. Nó nhanh hơn RSA nhưng an toàn kém hơn. Các khóa DSA thường ngắn hơn và ít an toàn hơn so với khóa RSA và chúng được sử dụng rộng rãi cho chữ ký số trong hệ thống pháp lý của Mỹ.
- ECDSA – Elliptic Curve Digital Signature Algorithm (ECDSA) là một loại mã hóa không đối xứng mới hơn, nhanh hơn và an toàn hơn cả khóa RSA và DSA.
Trong hướng dẫn này chúng tôi sẽ tạo 1 cắp khóa RSA/2048 bits.
Mở tiện ích PuTTygen. Chọn loại khóa RSA/2048. Nhấn Generate

Di chuyển chuột xung quanh khung hình PuTTy cho đến khi hoàn tất.

Cặp khóa đã được tạo. Khuyến nghị nên đặt pass cho Key passphrase để tăng cường bảo mật. Nếu bạn không muốn có thể bỏ qua.
Lưu lại Private Key và Public Key.

Trường hợp client là Linux, Export Private Key cho Linux như sau.

Bước 2: Sao chép Public Key vào Máy chủ Ubuntu của bạn
Tạo thư mục ~/.ssh trên máy chủ Ubuntu của bạn nếu nó chưa tồn tại. Thư mục ~/.ssh chứa các tệp liên quan đến việc xác thực và quản lý kết nối SSH trên máy chủ của bạn.
mkdir -p ~/.ssh
Bây giờ bạn có thể thêm khóa Public Key vào máy chủ Ubuntu bằng lệnh sau:
echo public_key_string >> ~/.ssh/authorized_keys
Trong đó “public_key_string”: Là public key mà bạn đã generate ở Bước 1
Ví dụ Public key của chúng tôi là:
echo ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCkpV9vvr9MeBweajn1kNoA47rmCjPIHJk+iwrJ0oJLbURj7uz516f5RWIZ7BID7GJzxCaD+unTOK3qNY7Pbldw0Gr3k9l2ZgNXVEbQmR7+kSwIzvM+SbLKQP3kKv+9+oOIvILlXZv4rVIbre4o9s9k3HQdggTzwacsm11m7S402JwK4+VZvyvrdg4hClgMO3nO8TC24tlP7hc1H4WaTe7FUnZEeas9Pe7s26vzn+Q4Bs6Y3NZ/E6NFaFdxvSdbzCNVb9sd1YsVeuwNjsQ1Ku/SJWXKm3ee4kohUQDREhVpwlEZLQYGsfJw3r9BC3wfZ+wH+YQtpoSZkbluzw8S/PcP rsa-key-20231111 >> ~/.ssh/authorized_keys
Cuối cùng, đảm bảo rằng thư mục ~/.ssh và tệp authorized_keys có quyền truy cập phù hợp:
sudo chmod 700 ~/.ssh
sudo chmod 600 ~/.ssh/authorized_keys
Bước 3: Xác thực vào máy chủ Ubuntu của bạn bằng cách sử dụng khóa SSH
Trong hướng dẫn này chúng tôi sử dụng PuTTy để truy cập máy chủ Ubuntu bằng SSH Key
Mở PuTTy và thêm vào Private Key như sau:

Sau đó bạn có thể truy cập máy chủ Ubuntu mà ko cần Password.
Trường hợp client SSH là Linux, truy cập SSH Key vào máy chủ Ubuntu như sau:
ssh -i "đường dẫn chứa file Private Key" root@IP_Server
Bước 4: Vô hiệu hóa xác thực bằng mật khẩu trên máy chủ của bạn
Nếu bạn đã đă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, bạn đã thành công cấu hình xác thực dựa trên khóa SSH 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 đang hoạt động, điều này có nghĩa là máy chủ của bạn vẫn có thể bị tấn công bằng cách dò mật khẩu.
Trước khi hoàn thành 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 dựa trên khóa SSH cho tài khoản root trên máy chủ này, hoặc tốt hơn là đã cấu hình xác thực dựa trên khóa SSH cho một tài khoản không phải root trên máy chủ này với đặc quyền sudo. Bước này sẽ khóa các đăng nhập dựa trên mật khẩu, do đó đảm bảo rằng bạn vẫn có quyền truy cập quản trị là rất quan trọng.
Sau đó, mở tệp cấu hình của dịch vụ SSH:
sudo vi /etc/ssh/sshd_config
Tìm chỉ thị gọi là PasswordAuthentication. Dòng này có thể đã được chú thích bằng ký tự # ở đầu dòng. Bỏ chú thích bằng cách xóa ký tự # khỏi dòng đó và đặt giá trị là no. Điều này sẽ vô hiệu hóa khả năng đăng nhập qua SSH bằng mật khẩu tài khoản
. . .
PasswordAuthentication no
. . .
Khởi động lại dịch vụ ssh
sudo systemctl restart ssh
Tổng kết
Bây giờ bạn đã cấu hình xác thực dựa trên khóa SSH trên máy chủ của bạn, cho phép bạn đăng nhập mà không cần nhập mật khẩu tài khoản.