Sebelumnya saya sudah pernah menulis beberapa tulisan mengenai Github, tepatnya bagaimana cara untuk clone remote repository Github ke komputer lokal teman-teman, bahkan update remote repository lokal dilakukan langsung dari komputer lokal (Baca : Membuat Github Repository dari Existing Local Repository & Mengganti Remote URL Github Repository (HTTPS to SSH))
Akan tetapi, jika teman-teman perhatikan commit atau perubahan yang dilakukan via komputer lokal tidak ada tulisan “verified”-nya, baik menggunakan protokol HTTPS ataupun SSH. Berbeda jika teman-teman melakukan perubahan langsung dari website Github. Berikut adalah contoh tampilan tracking commit atau perubahan jika dilakukan dari komputer lokal & langsung dari Github.
Jika demikian, apakah commit atau update via komputer lokal tidak bisa mendapat tanda verfied seperti itu? Tentu saja bisa, hanya saja teman-teman harus generate GPGkey dari komputer lokal bersangkutan.
GPG ini sebenarnya termasuk dari digital certificate, seperti SSL, SMIME dan digital-digital certificates lainnya, berfungsi untuk enkripsi data-data yang dikirim dari satu tempat ke tempat lain sehingga data yang dikirimkan bisa sampai ke tujuan tanpa bisa dilihat isinya oleh orang lain.
Generate GPG Key
- Akses terminal komputer lokal
- Install packet gnupg dengan perintah berikut
# yum install gnupg -y
- Generate GPG key dengan perintah berikut
1. Pilih tipe key nomor 1 (RSA & RSA)
2. Untuk keysize boleh teman-teman ganti ataupun mengikuti default, yaitu 2048
3. Masa berlaku GPG key bisa teman-teman sesuaikan per hari/bulan/tahun atau bahkan tidak pernah expire. Disini saya memberikan waktu 1 tahun, sehingga saya perlu untuk generate key baru setiap tahunnya untuk menggantikan GPG key tahun sebelumnya
4. Masukkan nama
5. Masukkan email
6. Masukkan O jika sudah Ok
7. Untuk passphrase bisa teman-teman berikan password ataupun dikosongkan. Jika diisi, maka teman-teman harus memasukkan password setiap menggunakan GPG key# gpg --gen-key gpg (GnuPG) 2.0.22; Copyright (C) 2013 Free Software Foundation, Inc. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Please select what kind of key you want: (1) RSA and RSA (default) (2) DSA and Elgamal (3) DSA (sign only) (4) RSA (sign only) Your selection? 1 RSA keys may be between 1024 and 4096 bits long. What keysize do you want? (2048) Requested keysize is 2048 bits Please specify how long the key should be valid. 0 = key does not expire <n> = key expires in n days <n>w = key expires in n weeks <n>m = key expires in n months <n>y = key expires in n years Key is valid for? (0) 1y Key expires at Sat 08 Mei 2021 06:29:30 AM WIB Is this correct? (y/N) y GnuPG needs to construct a user ID to identify your key. Real name: Raihan Email address: muhammadraihan519@gmail.com Comment: You selected this USER-ID: "Raihan <muhammadraihan519@gmail.com>" Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O You need a Passphrase to protect your secret key. You don't want a passphrase - this is probably a *bad* idea! I will do it anyway. You can change your passphrase at any time, using this program with the option "--edit-key". We need to generate a lot of random bytes. It is a good idea to perform some other action (type on the keyboard, move the mouse, utilize the disks) during the prime generation; this gives the random number generator a better chance to gain enough entropy.
- Tunggu proses generate GPG key selesai, mohon bersabar karena prosesnya memang lama
- Melihat hasil generate openPGP dengan perintah berikut
# gpg --list-secret-keys --keyid-format LONG /home/raihan/.gnupg/secring.gpg ------------------------------- sec 2048R/5178C94D5273A305 2020-05-08 [expires: 2021-05-08] uid Raihan Utomo <muhammadraihan519@gmail.com> ssb 2048R/86B766CBE9F0BD22 2020-05-08
Menambahkan GPG Key ke Github
- Catat GPG key pada komputer lokal, dengan menjalankan perintah berikut, sesuaikan dengan keyid yang muncul setelah tulisan 2048R saat melihat hasil generate openPGP
# gpg --list-secret-keys --keyid-format LONG /home/raihan/.gnupg/secring.gpg ------------------------------- sec 2048R/5178C94D5273A305 2020-05-08 [expires: 2021-05-08] uid Raihan Utomo <muhammadraihan519@gmail.com> ssb 2048R/86B766CBE9F0BD22 2020-05-08 # gpg --armor --export 5178C94D5273A305 [Isi PGP key yang perlu disalin]
- Salin isi PGP
- Login ke akun Github teman-teman (https://github.com/login)
- Klik foto profile pada bagian pojok kanan atas dan pilih Settings
- Pilih menu SSH and GPG keys dan klik New GPG key
- Paste isi GPG key yang sudah teman-teman salin
- Setelah itu klik Add GPG key
Uji Coba Update Repository
- Masuk ke direktori remote repository di komputer lkoal
- Lakukan perubahan pada sebuah file di direktori tersebut
- Jalankan perintah berikut untuk memasukkan GPG key ke git komputer lokal
# gpg --list-secret-keys --keyid-format LONG /home/raihan/.gnupg/secring.gpg ------------------------------- sec 2048R/5178C94D5273A305 2020-05-08 [expires: 2021-05-08] uid Raihan Utomo <muhammadraihan519@gmail.com> ssb 2048R/86B766CBE9F0BD22 2020-05-08 # git config --global user.signingkey 5178C94D5273A305
- Commit perubahan yang dilakukan dengan perintah berikut
# git add . # git commit -S -m "Testing Commit dengan GPG" .
- Push perubahan yang sudah dilakukan ke repository github
# git push origin master Counting objects: 7, done. Compressing objects: 100% (4/4), done. Writing objects: 100% (5/5), 1.20 KiB | 0 bytes/s, done. Total 5 (delta 2), reused 0 (delta 0) remote: Resolving deltas: 100% (2/2), completed with 1 local object. To git@github.com:raihan/online-shop.git 46b8e7e..719114b master -> master
- Cek tracking commit di akun Github teman-teman, jika sudah muncul verified berarti sudah berhasil