0
0
Lập trình
Thaycacac
Thaycacac thaycacac

Xác thực SSH Key trên Linux: Hướng dẫn chi tiết

Đăng vào 5 tháng trước

• 6 phút đọc

Mục lục

Giới thiệu

Khi kết nối tới một máy chủ bằng SSH, thông thường chúng ta sử dụng mật khẩu của người dùng. Bạn có đang sử dụng mật khẩu đơn giản như "123" hoặc tên của bạn? Bạn có nghĩ rằng điều đó an toàn không? Chắc chắn là không!

Để bảo mật tốt hơn, cách tốt nhất là sử dụng cặp khóa SSH. Bạn không cần nhớ mật khẩu nữa, chỉ cần sử dụng khóa SSH thay thế.

SSH Key là gì?

SSH Key bao gồm hai khóa: khóa riêng và khóa công khai. Khóa riêng nên được giữ bí mật và bạn cần biết nơi lưu trữ nó trên máy của mình. Khóa công khai có thể chia sẻ với bất kỳ ai.

Giả sử bạn có hai máy: máy tại nhà và một máy từ xa mà bạn muốn đăng nhập bằng SSH Key. Đầu tiên, hãy kiểm tra xem có bất kỳ SSH Key nào tồn tại trong máy của bạn không bằng lệnh: ls -l ~/.ssh. Lệnh này sẽ liệt kê tất cả các tệp SSH hiện có. Nếu có, bạn có thể sao lưu chúng.

Copy
ijas@debian:~$ ls -l ~/.ssh
ls: không thể truy cập '/home/ijas/.ssh': Không có thư mục hoặc tệp nào

Trên máy Debian và Ubuntu của tôi, không có SSH Key nào có sẵn.

Cách thức hoạt động của SSH Key

SSH Key được tạo thành từ một cặp khóa (Khóa riêng và Khóa công khai). Khóa công khai được tạo ra từ khóa riêng, chúng liên kết với nhau (nhưng bạn không thể lấy khóa riêng từ khóa công khai). Khóa công khai sẽ được gửi đến máy chủ từ xa và được lưu trữ tại đó.

Khi một người dùng cố gắng đăng nhập vào máy chủ từ xa, máy chủ tạo ra một chuỗi ngẫu nhiên các ký tự (chẳng hạn như 8&vw^afdsE...) và mã hóa nó bằng khóa công khai. Chuỗi mã hóa này chỉ có thể được giải mã bằng khóa riêng. Người dùng phải chứng minh rằng họ có thể giải mã chuỗi mã hóa này bằng khóa riêng. Khi đã giải mã xong, người dùng gửi lại kết quả cho máy chủ từ xa và nếu chúng khớp, người dùng được xác thực và có thể đăng nhập vào máy chủ.

Tạo SSH Key

Để tạo cặp khóa SSH trên máy của bạn, hãy sử dụng lệnh ssh-keygen. Lệnh này sẽ tạo, quản lý và chuyển đổi các khóa xác thực cho SSH.

Copy
ijas@debian:~$ ssh-keygen -b 4096
Đang tạo cặp khóa rsa công khai/riêng.
Nhập tệp để lưu khóa (/home/ijas/.ssh/id_rsa): 
Đã tạo thư mục '/home/ijas/.ssh'.
Nhập mật khẩu (trống nếu không muốn): 
Nhập lại mật khẩu: 
Thông tin của bạn đã được lưu tại /home/ijas/.ssh/id_rsa
Khóa công khai của bạn đã được lưu tại /home/ijas/.ssh/id_rsa.pub
Dấu vân tay của khóa là:
SHA256:IVrtM2J36uO57J5vwhI7c4+Bd4pRwAZHngYmDxqnuwc ijas@debian
Hình ảnh ngẫu nhiên của khóa là:
+---[RSA 4096]----+
|. + +.o          |
| = = * o         |
|o   . X o        |
| .   = + .       |
|E   . o S .      |
| o   ..= =       |
|. .   o++ .      |
| .    =*=B.      |
|      .O%Bo      |
+----[SHA256]-----+
  • Sử dụng cờ -b để chỉ định kích thước bit. Tôi đã sử dụng 4096, mạnh hơn nhiều so với mặc định.
  • Bạn có thể chọn vị trí lưu trữ khóa, tốt nhất là để mặc định.
  • Mật khẩu là một lớp bảo mật bổ sung. Bạn có thể thêm một mật khẩu mạnh nếu muốn, nhưng hãy nhớ rằng nếu bạn mất nó, sẽ không có cách nào để khôi phục.

Bây giờ bạn có thể thấy cặp SSH Key. Tệp .pub là khóa công khai.

Copy
ijas@debian:~$ ls -l ~/.ssh
total 8
-rw------- 1 ijas ijas 3381 Sep 16 07:49 id_rsa
-rw-r--r-- 1 ijas ijas  737 Sep 16 07:49 id_rsa.pub

Bạn có thể xem nội dung của khóa công khai bằng lệnh cat ~/.ssh/id_rsa.pub.

Sao chép SSH Key vào máy chủ từ xa

Để sao chép khóa công khai đến máy chủ từ xa, sử dụng lệnh sau: ssh-copy-id username@ip-address

Copy
ijas@debian:~$ ssh-copy-id ijas@192.168.139.147
/usr/bin/ssh-copy-id: INFO: Nguồn của khóa(s) sẽ được cài đặt: "/home/ijas/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: đang cố gắng đăng nhập với khóa mới, để lọc ra bất kỳ khóa nào đã được cài đặt
/usr/bin/ssh-copy-id: INFO: 1 khóa(s) vẫn còn cần cài đặt -- nếu bạn được nhắc bây giờ là để cài đặt các khóa mới
ijas@192.168.139.147's password: 

Số lượng khóa(s) đã thêm: 1

Bây giờ hãy thử đăng nhập vào máy, với: "ssh 'ijas@192.168.139.147'" và kiểm tra để đảm bảo rằng chỉ có khóa(s) bạn muốn được thêm vào.

Sau khi sao chép, bạn có thể thấy khóa công khai đã được lưu trong tệp authorized_keys trên máy chủ từ xa:

Copy
ijas@ubuntu:~$ ls -l ~/.ssh
total 4
-rw------- 1 ijas ijas 737 Sep 16 09:07 authorized_keys

Bây giờ khi bạn cố gắng SSH vào máy chủ từ xa, nó sẽ không yêu cầu mật khẩu (Đảm bảo bạn đang SSH ở thư mục nơi lưu khóa riêng).

Copy
ijas@debian:~$ ssh ijas@192.168.139.147
Chào mừng bạn đến với Ubuntu 25.04 (GNU/Linux 6.15.11-orbstack-00539-g9885ebd8e3f4 aarch64)

 * Tài liệu:  https://help.ubuntu.com
 * Quản lý:     https://landscape.canonical.com
 * Hỗ trợ:        https://ubuntu.com/pro
Lần đăng nhập cuối: Tue Sep 16 09:06:43 2025 từ 192.168.139.177

Thực hành tốt nhất

  • Sử dụng độ dài khóa mạnh: Khóa SSH nên có độ dài ít nhất 2048 bit, 4096 bit là tốt hơn.
  • Bảo mật khóa riêng: Đảm bảo rằng khóa riêng của bạn không bị lộ ra ngoài và lưu trữ nó ở một vị trí an toàn.
  • Sử dụng passphrase: Thêm một passphrase mạnh cho khóa riêng để tăng cường bảo mật.

Những cạm bẫy phổ biến

  • Không bảo vệ khóa riêng: Nếu khóa riêng không được bảo vệ, kẻ xấu có thể sử dụng nó để truy cập máy chủ của bạn.
  • Chia sẻ khóa công khai không an toàn: Hãy cẩn thận với việc chia sẻ khóa công khai, đảm bảo chỉ chia sẻ với máy chủ mà bạn tin tưởng.

Mẹo hiệu suất

  • Sử dụng SSH Agent: Sử dụng ssh-agent để quản lý các khóa SSH và tự động cung cấp khóa khi cần thiết mà không phải nhập mật khẩu mỗi lần.
  • Tối ưu hóa cấu hình SSH: Cấu hình file ~/.ssh/config để thêm các tùy chọn như Compression yes, giúp tăng tốc độ kết nối.

Khắc phục sự cố

  • Không thể đăng nhập: Đảm bảo rằng khóa công khai đã được sao chép chính xác vào ~/.ssh/authorized_keys trên máy chủ từ xa.
  • Lỗi quyền truy cập: Đảm bảo rằng thư mục ~/.ssh trên máy chủ từ xa có quyền truy cập đúng, thường là 700 cho thư mục và 600 cho tệp authorized_keys.

Câu hỏi thường gặp

Q: Tôi có thể sử dụng SSH key cho nhiều máy chủ không?
A: Có, bạn có thể sử dụng cùng một SSH key cho nhiều máy chủ miễn là khóa công khai đã được thêm vào authorized_keys trên từng máy chủ.

Q: Tôi có cần xóa SSH key cũ không?
A: Nếu không còn sử dụng hoặc nghi ngờ rằng nó đã bị lộ, bạn nên xóa SSH key cũ khỏi máy chủ.

Kết luận

SSH Keys cung cấp cho bạn sự bảo mật tốt hơn, tốc độ đăng nhập nhanh hơn và tâm lý thoải mái, khiến chúng trở thành thực hành tốt nhất cho việc quản lý hệ thống Linux.

Chúc mừng! 🎉 Bạn đã tiến thêm một bước trong hành trình Linux của mình. Cảm ơn bạn đã đọc!

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào