Merge pull request #28 from ditatompel/verified-git-commit

2 New article from jasmerah1966 about git ssh and git signing commit
This commit is contained in:
Cristian Ditaputratama 2023-10-24 23:56:56 +07:00 committed by GitHub
commit 2863a7b2dd
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
14 changed files with 297 additions and 0 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

View file

@ -0,0 +1,183 @@
---
title: "Cara Setting 'Verified' (Sign) Git Commit Dengan SSH atau GPG Signature (Linux)"
description: "Langkah-langkah dan cara menambahkan 'Verified' commit message pada GitHub menggunakan SSH Signing Key atau GPG Signing Key."
# linkTitle:
date: 2023-10-23T23:32:49+07:00
lastmod:
draft: false
noindex: false
# comments: false
nav_weight: 1000
# nav_icon:
# vendor: bootstrap
# name: toggles
# color: '#e24d0e'
series:
# - Tutorial
categories:
- TIL
tags:
- Git
- GitHub
- SSH
- PGP
images:
# menu:
# main:
# weight: 100
# params:
# icon:
# vendor: bs
# name: book
# color: '#e24d0e'
authors:
- jasmerah1966
---
Cara menambahkan **"Verified"** _commit message_ pada **GitHub** menggunakan **SSH Signing Key** atau **GPG Signing Key**.
<!--more-->
---
Jika Anda sering berkunjung ke halaman _commit history_ dari sebuah **GitHub** repositori, Anda mungkin menemukan ada beberapa _commit message_ yang memiliki label **"Verified"** berwarna hijau, tidak berlabel, atau bahkan berlabel **"Unverified"** dengan label berwarna orange.
Fitur pada GitHub tersebut menandakan bahwa _commit_ atau _tag_ tersebut berasal dari sumber yang otentik dan telah terverifikasi oleh GitHub. Hal ini penting supaya pengguna lain yang menggunakan repositori tersebut yakin bahwa perubahan yang dilakukan pada repositori tersebut memang benar dari sumber yang sudah terverifikasi.
Sampai artikel ini dibuat, ada 3 cara untuk menandatangani atau __signing__ pesan _commit_ tersebut, yaitu dengan menggunakan **GPG signature**, **SSH signature**, dan **S/MIME signature**. Dari ketiga metode yang ada, saya ingin berbagi pengalaman saya menggunakan GPG dan SSH signature untuk melakukan _signing_.
Untuk mengikuti langkah-langkah di artikel ini, pastikan Anda sudah dapat menggunakan aktifitas seperti _commit_ dari komputer Anda tanpa ada masalah. Jika Anda belum pernah mensetting Git, ikuti artikel saya sebelumnya yang berjudul [Cara Menggunakan Git Melalui Protokol SSH Untuk Akun GitHub]({{< ref "/tutorials/how-to-use-git-using-ssh-protocol-for-github/index.id.md" >}}).
## Menggunakan SSH Key Signature
Cara paling mudah adalah menggunakan metode SSH signature. Anda dapat menggunakan SSH key yang sudah Anda gunakan untuk __Authentication key__ dan mengupload _public key_ yang sama untuk digunakan sebagai __Signing key__.
### Menambahkan SSH Key Sebagai Signing Key
Untuk menambahkan SSH key sebagai __Signing key__ di akun GitHub Anda:
1. Masuk ke __"Settings"__ > __"SSH and GPG keys"__ > Klik tombol __"New SSH key"__.
2. Isi __"Title"__ dengan apapun yang mudah Anda ingat untuk mengidentifikasi _SSH key_ Anda.
3. Pada bagian __"Key type"__, pilih __"Signing Key"__.
4. Terakhir kembali ke terminal dan _paste_ isi dari __SSH public key__ ke _textarea_ __"Key"__. Setelah itu klik tombol __Add SSH key"__.
### Mengubah Konfigurasi Git di Komputer Anda
Setelah SSH Signing key ditambahkan ke Akun GitHub, Anda perlu merubah konfigurasi git `gpg.format` ke `ssh` dengan cara menjalankan perintah berikut:
```shell
git config --global gpg.format ssh
```
Terakhir update config `user.signingkey` dan masukkan lokasi dimana **SSH PUBLIC KEY** yang sudah Anda upload.
```shell
git config --global user.signingkey ~/.ssh/github_key.pub
```
Catatan: Ubah `~/.ssh/github_key.pub` dengan lokasi sebenarnya PUBLIC KEY Anda disimpan.
## Menggunakan GPG Key Signature
Selain menggunakan SSH Key Signature, Anda bisa menggunakan GPG Key Signature untuk melakukan _signing commit_.
### Membuat GPG Key
Jika Anda belum memiliki _GPG key pair_, Anda dapat membuatnya dengan menjalankan perintah berikut:
```shell
gpg --full-generate-key
```
Setelah menjalankan perintah diatas, Anda akan diminta untuk melengkapi informasi, diantaranya:
1. Jenis: Pilih apa saja, Saya rekomendasikan untuk menggunakan default saja, yaitu `RSA and RSA`.
2. Key size: Isi antara 1024 hingga 4096. Default 3072. Saya rekomendasikan untuk menggunakan `4096`.
3. Seberapa lama GPG key tersebut valid: Saya rekomendasikan untuk menggunakan default (`0`, tidak ada tanggal expire).
4. Masukkan informasi Nama, email, dan komentar. Perhatikan pada saat mengisi informasi email, **pastikan email yang Anda masukan sama dengan email yang Anda gunakan di GitHub** (dan sudah melakukan verifikasi).
5. Masukkan `passpharse` GPG key Anda.
Contoh output dari perintah `gpg --full-generate-key`:
```plain
gpg (GnuPG) 2.2.41; Copyright (C) 2022 g10 Code GmbH
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)
(14) Existing key from card
Your selection? 1
RSA keys may be between 1024 and 4096 bits long.
What keysize do you want? (3072) 4096
Requested keysize is 4096 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) 0
Key does not expire at all
Is this correct? (y/N) y
GnuPG needs to construct a user ID to identify your key.
Real name: Jasmerah1966
Email address: jasmerah1966@example.com
Comment: GPG sign key untuk GitHub
You selected this USER-ID:
"Jasmerah1966 (GPG sign key untuk GitHub) <jasmerah1966@example.com>"
Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O
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.
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.
gpg: revocation certificate stored as '/home/jasmerah1966/.gnupg/openpgp-revocs.d/F5FEE1EF836C62F5361A643B156C485C2EB2C1D6.rev'
public and secret key created and signed.
pub rsa4096 2023-10-23 [SC]
F5FEE1EF836C62F5361A643B156C485C2EB2C1D6
uid Jasmerah1966 (GPG sign key untuk GitHub) <jasmerah1966@example.com>
sub rsa4096 2023-10-23 [E]
```
### Mendapatkan Informasi GPG Key Anda
Untuk melihat list GPG key Anda (memiliki _secret key_), Anda dapat menjalankan perintah berikut:
```shell
gpg --list-secret-keys --keyid-format=long
```
Contoh output dari perintah diatas:
```plain
/home/jasmerah1966/.gnupg/pubring.kbx
-------------------------------------
sec rsa4096/156C485C2EB2C1D6 2023-10-23 [SC]
F5FEE1EF836C62F5361A643B156C485C2EB2C1D6
uid [ultimate] Jasmerah1966 (GPG sign key untuk GitHub) <jasmerah1966@example.com>
ssb rsa4096/04951FB42332019F 2023-10-23 [E]
```
Kemudian jalankan perintah berikut untuk mendapatkan GPG key dalam format **ASCII armor**:
```shell
gpg --armor --export 156C485C2EB2C1D6
```
> _**Catatan**: Ubah key ID milik saya diatas (`156C485C2EB2C1D6`) dengan key ID milik Anda._
Copy GPG key Anda (diawali dari `-----BEGIN PGP PUBLIC KEY BLOCK-----` sampai `-----END PGP PUBLIC KEY BLOCK-----`) yang setelah ini perlu Anda tambahkan ke akun GitHub Anda.
### Menambahkan GPG Ke Akun GitHub Anda
1. Masuk ke __"Settings"__ > __"SSH and GPG keys"__ > Klik tombol __"New GPG key"__.
2. Isi __"Title"__ dengan apapun yang mudah Anda ingat untuk mengidentifikasi _GPG key_ Anda.
3. Masukkan GPG key Anda ke _textarea_ __"Key"__. Setelah itu klik tombol __Add GPG key"__.
## Melakukan Signing Commit
Jika sudah disetting dengan benar, Anda bisa melakukan commit dengan perintah `git commit -S` atau `git commit -S -m 'Pesan commit kamu'`
Untuk signing dengan **S/MIME** saya belum pernah memiliki kesempatan untuk mencoba. Mungkin jika ada yang ingin menambahkan silahkan ditambahkan dengan melakukan pull request.
Semoga membantu.

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

View file

@ -0,0 +1,114 @@
---
title: "Cara Menggunakan Git Melalui Protokol SSH Untuk Akun GitHub"
description: "Cara menggunakan Git melalui protokol SSH untuk mengakses repositori GitHub. Dimulai dari membuat SSH key pair hingga menambahkan SSH public key ke akun GitHub Anda."
# linkTitle:
date: 2023-10-23T08:18:33+07:00
lastmod:
draft: false
noindex: false
# comments: false
nav_weight: 1000
# nav_icon:
# vendor: bootstrap
# name: toggles
# color: '#e24d0e'
series:
# - Tutorial
categories:
- TIL
tags:
- Git
- GitHub
- SSH
images:
# menu:
# main:
# weight: 100
# params:
# icon:
# vendor: bs
# name: book
# color: '#e24d0e'
authors:
- jasmerah1966
---
Artikel ini mungkin berguna bagi Anda yang ingin memulai menggunakan **Git** dan menghubungkannya ke **GitHub** menggunakan protokol **SSH**. Proses dimulai dari membuat __SSH key pair__ hingga menambahkan __SSH public key__ ke akun GitHub Anda.
<!--more-->
---
Git merupakan salah satu _version control_ yang paling disukai dan paling banyak digunakan oleh para _software developer_ di seluruh dunia. Beberapa _"Cloud" version control berbasis Git_ seperti [GitLab](https://about.gitlab.com/), [GitHub](https://github.com/), hingga [Codeberg](https://codeberg.org/) menawarkan beberapa fitur unik satu dengan yang lainnya. Namun ada fitur yang pasti ada di tiap _provider_, yaitu mengakses git repositori menggunakan protokol SSH.
Proses authentikasi menggunakan protokol SSH memanfaatkan __SSH public dan private key__ sehingga Anda tidak perlu memberikan __username__ dan _personal access token_ setiap ingin mengakses atau melakukan _commit_ ke repositori Anda.
Kali ini saya ingin berbagi cara menggunakan protokol SSH sebagai metode autentikasi ke spesifik provider, yaitu GitHub. Namun sebelum memulai, pastikan `git` dan `ssh` sudah terinstall di komputer Anda dan Anda sudah memiki akun di GitHub.com.
## Membuat SSH key
Ketika Anda ingin mengakses _private_ repositori Anda atau melakukan perubahan ke repositori GitHub Anda menggunakan SSH, Anda perlu menggunakan SSH _private key_ untuk proses autentikasi. Maka dari itu, buat SSH key pair menggunakan perintah berikut:
```shell
mkdir ~/.ssh && chmod 700 ~/.ssh
ssh-keygen -t ed25519 -f ~/.ssh/github_key -C "SSH key untuk github"
```
Perintah diatas akan membuat folder `.ssh` di `$HOME` direktori, merubah folder _permission_nya, dan meletakkan _private key_ di `$HOME/.ssh/github_key` dan _public key_ di `$HOME/.ssh/github_key.pub`. Contoh _output_ dari perintah `ssh-keygen` diatas:
```plain
Generating public/private ed25519 key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/jasmerah1966/.ssh/github_key
Your public key has been saved in /home/jasmerah1966/.ssh/github_key.pub
The key fingerprint is:
SHA256:dPniZJhVTjmj2gOi5Q4we8gucBs6b+4fpPJ6J2xnj7Q SSH key untuk github
The key's randomart image is:
+--[ED25519 256]--+
| o. |
| =+ |
| . +..o |
| o o..=.. |
| . =.+ .S++ . |
|. *o+ . .+o. |
|o=.+oo .. |
|+oO.++. |
|.@=*E.. |
+----[SHA256]-----+
```
> _**Catatan**: Anda akan diminta untuk memasukkan `passphrase` pada saat proses pembuatan SSH key pair diatas. Terserah Anda ingin mengisi atau mengosongi passphrase SSH key Anda. Jika Anda mengisi passphrase, maka Anda akan diminta memberikan passphrase saat Anda menggunakan SSH key tersebut._
## Menggunakan SSH Config File
Pada umumnya, banyak tutorial di luar sana yang menggunakan `ssh-agent` sebagai _SSH key manager_nya. Namun saya lebih menyukai trik yang digunakan oleh @ditatompel dengan [Manfaatkan Fitur SSH Config File]({{< ref "/tutorials/automate-cyberpanel-git-push-without-git-manager/index.id.md#manfaatkan-fitur-ssh-config-file" >}}).
Tambahkan (atau buat jika filenya belum ada) baris berikut ini ke SSH config file di `~/.ssh/config`:
```plain
# ~/.ssh/config file
# ...
Host github.com
User git
PubkeyAuthentication yes
IdentityFile ~/.ssh/github_key
# ...
```
Pastikan `IdentityFile` mengacu ke SSH _private key_ yang sudah Anda buat sebelumnya (pada contoh di artikel ini adalah `~/.ssh/github_key`).
## Menambahkan SSH Public Key Ke Akun GitHub Anda
Setelah memiliki _SSH key pair_ dan _SSH config file_ dikonfigurasi, saatnya menambahkan _SSH public Key_ ke akun GitHub Anda.
1. Masuk ke __"Settings"__ > __"SSH and GPG keys"__ > Klik tombol __"New SSH key"__.
2. Isi __"Title"__ dengan apapun yang mudah Anda ingat untuk mengidentifikasi _SSH key_ Anda.
3. Pada bagian __"Key type"__, pilih __"Authentication Key"__.
4. Terakhir kembali ke terminal dan _paste_ isi dari __SSH public key__ (pada contoh tutorial ini adaalah `~/.ssh/github_key.pub`) key _textarea_ __"Key"__. Setelah itu klik tombol __Add SSH key"__.
![menambahkan SSH key baru ke akun GitHub](github-add-new-ssh-key.jpg#center)
Dengan begitu proses konfigurasi sudah selesai dan Anda dapat mencoba melakukan lakukan koneksi ke GitHub dengan perintah `ssh -T github.com`. Seharusnya Anda menerima pesan bahwa koneksi Anda ke GitHub berhasil: "**Hi jasmerah1966! You've successfully authenticated, but GitHub does not provide shell access.**".
Selanjutnya: Baca [Cara Setting 'Verified' (Sign) Git Commit Dengan SSH atau GPG Signature]({{< ref "/tutorials/how-to-create-verified-sign-git-commit/index.id.md" >}}).