Trong SSH (Secure Shell), khóa công khaikhóa bí mật là cặp khóa dùng để xác thực không cần mật khẩu. Cách hoạt động rất giống cơ chế khóa–ổ khóa:

🔑 1. Khóa bí mật (Private Key)

  • Lưu trên máy client (máy bạn).
  • Không bao giờ được gửi đi, không upload lên server, không chia sẻ cho ai.
  • Nếu bị lộ → ai cũng đăng nhập được vào server của bạn.
  • File thường nằm ở: ~/.ssh/id_rsa ~/.ssh/id_ecdsa ~/.ssh/id_ed25519
  • Quyền file phải chặt: chmod 600 ~/.ssh/id_rsa

🔐 2. Khóa công khai (Public Key)

  • Có thể chia sẻ thoải mái.
  • Bạn copy lên server vào file: ~/.ssh/authorized_keys
  • File public key thường là: ~/.ssh/id_rsa.pub ~/.ssh/id_ecdsa.pub ~/.ssh/id_ed25519.pub

🧠 Nguyên lý hoạt động dễ hiểu

  1. Bạn phát sinh cặp khóa: ssh-keygen -t ed25519 → tạo ra:
    • id_ed25519 (khóa bí mật)
    • id_ed25519.pub (khóa công khai)
  2. Bạn đưa khóa công khai lên server: ssh-copy-id user@server
  3. Khi bạn SSH vào server:
    • Server kiểm tra trong authorized_keys xem có public key của bạn không.
    • Nếu có → server gửi thử thách (challenge) được mã hóa.
    • Client giải mã thử thách bằng private key của bạn.
    • Nếu giải được → chứng minh bạn là chủ private key → login thành công.
    • Không hề gửi private key lên mạng.

✔️ Tóm lại

Thuộc tínhKhóa công khai (Public)Khóa bí mật (Private)
Lưu ở đâuClient + ServerChỉ Client
Có được chia sẻ không?ĐượcTuyệt đối không
Dùng để làm gì?Server xác nhận bạnClient chứng minh danh tính
Lộ thì sao?Không saoMất server