Hướng dẫn thiết lập SSH Keys trên Ubuntu 12.04 để bảo mật kết nối

cach thiet lap ssh keys tren ubuntu 12 1

Giao thức Secure Shell (SSH) là một tiêu chuẩn mạng sử dụng mã hoá, cho phép truy cập an toàn vào máy tính từ xa qua các mạng không bảo mật. Mặc dù SSH hỗ trợ xác thực bằng mật khẩu, nhưng việc sử dụng SSH keys lại mang lại độ bảo mật cao hơn, hạn chế nguy cơ bị tấn công brute-force dò mật khẩu.

Khi tạo cặp khóa SSH, hệ thống sẽ sinh ra hai chuỗi ký tự: public key và private key. Bạn có thể lưu trữ public key trên máy chủ từ xa, sau đó kết nối qua SSH client khi có private key tương ứng. Khi cặp khóa này khớp nhau, máy chủ SSH sẽ cho phép truy cập mà không cần nhập mật khẩu.

Để tăng cường bảo mật, bạn cũng có thể bảo vệ private key bằng một passphrase – một biện pháp được khuyến khích nhằm đảm bảo an toàn tối đa cho quá trình đăng nhập từ xa.

Bước 1 – Tạo cặp khóa

Bước đầu tiên là tạo cặp khóa trên máy client – đây thường là máy tính cá nhân của bạn. Gõ lệnh sau vào dòng lệnh của máy tính:

ssh-keygen -t ed25519

Output:

Generating public/private ed25519 key pair.

Bạn sẽ thấy xác nhận rằng quá trình tạo khóa đã bắt đầu và bạn sẽ được yêu cầu nhập một số thông tin, điều mà chúng ta sẽ bàn luận trong bước tiếp theo.

Lưu ý: Nếu bạn đang sử dụng hệ thống cũ không hỗ trợ tạo cặp khóa ed25519, hoặc máy chủ bạn kết nối không hỗ trợ, bạn nên tạo một cặp khóa rsa mạnh thay thế:

ssh-keygen -t rsa -b 4096

Lệnh trên thay đổi tham số -t (kiểu) thành rsa, và thêm tham số -b 4096 (số bit) để tạo ra một khóa có độ dài 4096 bit.

Bước 2 – Xác định nơi lưu khóa

Lời nhắc đầu tiên của lệnh ssh-keygen sẽ hỏi bạn muốn lưu các khóa ở đâu:

Output:

Enter file in which to save the key (/home/sammy/.ssh/id_ed25519):

Bạn có thể nhấn ENTER để lưu các file vào vị trí mặc định trong thư mục .ssh nằm trong thư mục home của bạn.

Ngoài ra, bạn có thể chọn tên file hoặc vị trí khác bằng cách gõ vào sau lời nhắc và nhấn ENTER.

Bước 3 – Tạo cụm mật khẩu (Passphrase)

Lời nhắc thứ hai và cuối cùng của ssh-keygen sẽ yêu cầu bạn nhập một cụm mật khẩu:

Output:

Enter passphrase (empty for no passphrase):

Việc có sử dụng passphrase hay không hoàn toàn tùy thuộc vào bạn, nhưng rất được khuyến khích: độ an toàn của cặp khóa, bất kể dùng thuật toán mã hoá nào, vẫn phụ thuộc vào việc nó không bị người khác truy cập.

Nếu một private key không có passphrase rơi vào tay người không được ủy quyền, họ sẽ có thể đăng nhập vào bất kỳ máy chủ nào mà bạn đã cấu hình với public key tương ứng.

Nhược điểm chính của việc có passphrase – phải nhập nó mỗi lần – có thể được khắc phục bằng cách sử dụng dịch vụ ssh-agent, sẽ tạm thời lưu trữ khóa đã được mở khóa và cho phép SSH client truy cập. Nhiều agent này được tích hợp sẵn với kho khóa gốc của hệ điều hành, giúp quá trình mở khóa trở nên mượt mà hơn.

Để tóm lại, toàn bộ quá trình tạo khóa sẽ như sau:

ssh-keygen -t ed25519

Output

Generating public/private ed25519 key pair.
Enter file in which to save the key (/home/sammy/.ssh/id_ed25519):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/sammy/.ssh/id_ed25519
Your public key has been saved in /home/sammy/.ssh/id_ed25519.pub
The key fingerprint is:
SHA256:EGx5HEXz7EqKigIxHHWKpCZItSj1Dy9Dqc5cYae+1zc sammy@hostname
The key's randomart image is:
+--[ED25519 256]--+
| o+o o.o.++      |
|=oo.+.+.o  +     |
|*+.oB.o.    o    |
|*. + B .   .     |
| o. = o S . .    |
|.+ o o . o .     |
|. + . ... .      |
|.  . o. . E      |
| .. o.   . .     |
+----[SHA256]-----+

Giải thích:

  • Public key hiện được lưu tại /home/sammy/.ssh/id_ed25519.pub.
  • Private key hiện được lưu tại /home/sammy/.ssh/id_ed25519.

Bước 4 – Sao chép Public Key lên máy chủ

Sau khi tạo cặp khóa, đã đến lúc đặt public key lên máy chủ mà bạn muốn kết nối.

Bạn có thể sao chép public key vào file authorized_keys của máy chủ bằng lệnh ssh-copy-id. Hãy đảm bảo thay thế tên người dùng và địa chỉ ví dụ:

ssh-copy-id sammy@your_server_address

Sau khi lệnh hoàn thành, bạn sẽ có thể đăng nhập vào máy chủ qua SSH mà không cần nhập mật khẩu. Tuy nhiên, nếu bạn đã thiết lập passphrase khi tạo SSH key, bạn sẽ được yêu cầu nhập passphrase vào thời điểm này. Lưu ý rằng đó là SSH client trên máy của bạn yêu cầu giải mã private key, không phải máy chủ từ xa yêu cầu mật khẩu.

Bước 5 – Vô hiệu hóa xác thực bằng mật khẩu (tùy chọn)

Sau khi đã sao chép SSH keys lên máy chủ, bạn có thể muốn cấm hoàn toàn đăng nhập bằng mật khẩu bằng cách cấu hình máy chủ SSH để vô hiệu hoá xác thực bằng mật khẩu.

Cảnh báo: Trước khi vô hiệu hóa xác thực bằng mật khẩu, hãy chắc chắn rằng bạn có thể đăng nhập thành công vào máy chủ với SSH key, và không có người dùng nào khác trên máy chủ đang sử dụng mật khẩu để đăng nhập.

Để vô hiệu hóa xác thực bằng mật khẩu, hãy mở file cấu hình SSH. File này thường nằm tại:

sudo nano /etc/ssh/sshd_config

Lệnh trên sẽ mở file cấu hình trong trình soạn thảo văn bản nano. Tìm dòng chứa PasswordAuthentication (hoặc tạo dòng này nếu nó chưa tồn tại), đảm bảo dòng này không bị comment (không có dấu # ở đầu dòng) và thay đổi giá trị thành no:

/etc/ssh/sshd_config
PasswordAuthentication no

Sau khi chỉnh sửa xong, lưu và đóng file. Trong nano, nhấn CTRL+O để lưu, nhấn ENTER để xác nhận tên file, sau đó nhấn CTRL+X để thoát.

Tiếp theo, tải lại dịch vụ sshd để áp dụng các thay đổi:

sudo systemctl reload sshd

Trước khi đóng phiên SSH hiện tại, hãy mở một terminal khác và thử kết nối để xác nhận bạn vẫn có thể đăng nhập thành công.

Kết luận

Trong bài hướng dẫn này, bạn đã thực hiện thành công việc tạo cặp khóa SSH, chuyển public key lên máy chủ và (tuỳ chọn) vô hiệu hóa đăng nhập bằng mật khẩu nhằm nâng cao bảo mật. Để tìm hiểu thêm về SSH và các dịch vụ liên quan, bao gồm cách cấu hình xác thực đa yếu tố, hãy tham khảo bài viết sau:

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