Menambahkan GPG Key di Github

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

Leave a Reply

Your email address will not be published. Required fields are marked *