Ký Commit Git bằng SSH Key: Cách lấy “Tick Xanh” nhanh và gọn nhất

Git tutorial - IT technology blog
Git tutorial - IT technology blog

Tại sao bạn nên ký Commit ngay hôm nay?

Thú thật, trước đây mình rất ngại ký (sign) commit. Dù rất thèm cái badge “Verified” màu xanh trên GitHub cho chuyên nghiệp, nhưng việc động vào GPG (GNU Privacy Guard) là một trải nghiệm khá tệ. Việc quản lý key, gia hạn hay đồng bộ giữa các máy tính thực sự là một “cực hình”.

Mọi thứ đã thay đổi từ phiên bản Git 2.34 (ra mắt cuối năm 2021). Git chính thức hỗ trợ ký commit bằng SSH key. Đây là thứ mà gần như lập trình viên nào cũng có sẵn trong máy để push code. Không cần cài thêm phần mềm, không cần học lệnh GPG phức tạp.

Bạn có biết rằng định danh trong Git cực kỳ lỏng lẻo? Chỉ với hai dòng lệnh git config user.namegit config user.email, bất kỳ ai cũng có thể giả mạo bạn. Mình từng thấy một bạn intern đùa dai bằng cách giả danh Tech Lead để commit một đoạn code lỗi. Hậu quả là cả team mất cả buổi sáng để truy tìm thủ phạm vì log ghi tên sếp nhưng code thì… lạ lắm. Việc ký commit giúp đảm bảo tính xác thực (Authenticity): Code này chắc chắn do bạn viết, không ai có thể giả mạo.

Ký commit bằng SSH key mang lại 3 lợi ích rõ rệt:

  • Tận dụng đồ có sẵn: Dùng chính SSH key (như Ed25519) bạn đang dùng để push code.
  • Cài đặt siêu tốc: Chỉ mất chưa đầy 2 phút để cấu hình xong.
  • Hỗ trợ rộng rãi: GitHub, GitLab và Bitbucket hiện đều đã hỗ trợ hiển thị tick xanh cho phương thức này.

Điều kiện để bắt đầu

Máy tính của bạn cần chạy Git phiên bản 2.34 trở lên. Hãy kiểm tra ngay bằng lệnh:

git --version

Nếu phiên bản cũ hơn, hãy cập nhật ngay. Tiếp theo, bạn cần một cặp SSH key. Mình khuyên dùng thuật toán Ed25519. Nó vừa nhanh, vừa bảo mật hơn hẳn chuẩn RSA cũ (Ed25519 chỉ có 256-bit nhưng độ bảo mật tương đương RSA 3072-bit):

ssh-keygen -t ed25519 -C "[email protected]"

Mẹo nhỏ: Hãy đặt passphrase cho key. Đây là lớp bảo vệ cuối cùng nếu chẳng may máy tính của bạn rơi vào tay người lạ.

3 bước cấu hình ký Commit

Chúng ta sẽ yêu cầu Git chuyển từ cơ chế ký mặc định (GPG) sang SSH bằng vài dòng lệnh đơn giản.

Bước 1: Chuyển định dạng ký sang SSH

git config --global gpg.format ssh

Bước 2: Chỉ định Key dùng để ký

Bạn trỏ Git tới file Public Key (file có đuôi .pub) của mình:

git config --global user.signingkey ~/.ssh/id_ed25519.pub

Lưu ý: Nếu dùng Windows, đường dẫn thường là C:/Users/Tên_Bạn/.ssh/id_ed25519.pub.

Bước 3: Bật tự động ký

Đừng để mỗi lần commit lại phải gõ thêm flag -S. Hãy bật tự động cho tất cả dự án:

git config --global commit.gpgsign true
git config --global tag.gpgsign true

Cấu hình trên GitHub/GitLab

Đây là bước then chốt để có tick xanh. SSH key dùng để đẩy code và SSH key dùng để được GitHub quản lý ở hai mục khác nhau, dù bạn có thể dùng chung một key.

  1. Truy cập Settings -> SSH and GPG keys trên GitHub.
  2. Nhấn New SSH Key.
  3. Tại mục Key type, cực kỳ quan trọng: Chọn Signing Key.
  4. Dán nội dung file id_ed25519.pub vào và lưu lại.

Kiểm tra thành quả

Hãy thử tạo một commit mới và kiểm tra chữ ký ngay tại máy local:

git commit -m "Test signing with SSH"
git log --show-signature -1

Nếu thấy dòng Good signature from SSH key..., bạn đã thành công. Tuy nhiên, có thể Git sẽ báo cảnh báo về allowed_signers. Để xử lý triệt để và giúp Git tin tưởng chính bạn, hãy làm như sau:

# Tạo file lưu danh sách key tin cậy
touch ~/.ssh/allowed_signers

# Thêm email và key của bạn vào file
echo "$(git config --get user.email) $(cat ~/.ssh/id_ed25519.pub)" >> ~/.ssh/allowed_signers

# Khai báo file này với Git
git config --global gpg.ssh.allowedSignersFile ~/.ssh/allowed_signers

Bây giờ, khi push lên GitHub, bạn sẽ thấy biểu tượng Verified màu xanh bên cạnh commit. Nó không chỉ giúp profile của bạn trông chuyên nghiệp hơn mà còn là lời khẳng định đanh thép về chủ quyền mã nguồn. Đừng quên copy cặp key này khi đổi máy tính để giữ lịch sử commit luôn đồng nhất nhé!

Share: