Pernahkah kamu mencoba melakukan Pull Request (PR) namun ditolak karena commit tidak memiliki status Verified? Atau saat menjalankan git log --show-signature, kamu justru melihat pesan error gpg.ssh.allowedSignersFile?
Berikut adalah panduan langkah demi langkah untuk mengonfigurasi SSH Signing agar commit kamu diakui secara resmi oleh Git dan platform seperti GitHub.

Sebelum melangkah lebih jauh ke urusan keamanan dan verifikasi commit, pastikan kamu sudah merapikan manajemen akun Git di perangkatmu. Jika kamu masih kesulitan memisahkan antara proyek kantor dan pribadi, ada baiknya kamu membaca artikel :
Cara Pakai 2 Akun Git dalam 1 Device
1. Mengapa Commit Saya “Unverified”? #
Secara default, Git tidak menandatangani commit. Siapa pun bisa mengubah nama dan email mereka menjadi milikmu di konfigurasi lokal. Signature (tanda tangan digital) membuktikan bahwa commit tersebut benar-benar dibuat oleh pemegang kunci SSH yang sah.
2. Langkah Konfigurasi SSH Signing #
Jika kamu memilih menggunakan SSH (bukan GPG) untuk menandatangani commit, ikuti langkah-langkah berikut:
A. Beritahu Git untuk Menggunakan SSH #
Buka terminal dan jalankan perintah global berikut:
git config --global gpg.format ssh
git config --global commit.gpgsign trueB. Tentukan Kunci Signing Kamu #
Arahkan Git ke Public Key yang ingin kamu gunakan (biasanya .pub):
git config --global user.signingkey ~/.ssh/id_ed25519.pubC. Konfigurasi Verifikasi Lokal (allowed_signers)
#
Agar Git lokal bisa memverifikasi tanda tanganmu sendiri (saat git log), kamu harus membuat file yang berisi daftar penandatangan terpercaya.
-
Buat file
allowed_signers:# Ganti email dengan email Git kamu echo "[email protected] $(cat ~/.ssh/id_ed25519.pub)" > ~/.ssh/allowed_signers -
Daftarkan file ke Git:
git config --global gpg.ssh.allowedSignersFile ~/.ssh/allowed_signers
3. Menangani Multiple Account (IncludeIf) #
Jika kamu memiliki akun Personal dan Kantor/Alter dalam satu device, gunakan fitur includeIf di dalam file ~/.gitconfig agar tanda tangan tetap sesuai dengan akun yang digunakan.
Contoh isi ~/.gitconfig:
[user]
name = Akun Utama
email = [email protected]
signingkey = ~/.ssh/id_main.pub
[includeIf "gitdir:~/kerjaan/**"]
path = ~/.gitconfig-kerjaan
[gpg]
format = ssh
[gpg "ssh"]
allowedSignersFile = ~/.ssh/allowed_signersContoh isi ~/.gitconfig-kerjaan:
[user]
name = Akun Kantor
email = [email protected]
signingkey = ~/.ssh/id_kantor.pubPenting: Pastikan menggunakan
**di akhir path agar Git mengenali semua sub-direktori di dalamnya.
4. Memperbaiki Commit yang Sudah Terlanjur Dibuat #
Jika kamu sudah membuat commit tapi lupa menandatanganinya (sehingga PR ditolak), kamu tidak perlu menghapus commit tersebut. Cukup “tanda tangani ulang” commit terakhir dengan perintah:
git commit --amend --no-edit -SSetelah itu, lakukan push paksa (jika sudah di-push sebelumnya):
git push --force-with-lease5. Verifikasi Akhir #
Untuk memastikan semuanya bekerja, jalankan:
git log --show-signature -1Jika muncul output seperti di bawah ini, selamat! Commit kamu sudah aman.
Good "git" signature for [email protected] with ED25519 key ...
FAQ #
- Q: Sudah setting tapi GitHub tetap “Unverified”?
- A: Pastikan Public Key SSH kamu sudah dimasukkan ke bagian “SSH and GPG Keys” di Settings GitHub, dan pilih “Key type: Signing Key”.
- Q: Muncul error
gpg.ssh.allowedSignersFile?- A: Itu karena file
allowed_signersbelum dibuat atau path-nya salah digit config.
- A: Itu karena file