Mengkonfigurasi GPG & OpenSSH untuk Git di OpenBSD
GnuPG (The GNU Privacy Guard) merupakan salah satu
standar yang mengimplementasikan OpenPGP yang didefinisikan oleh
rfc4880. Tujuan dari GnuPG untuk mengenkripsikan dan
menandai data dan komunikasi, sekaligus memanagemen kunci sistem.
GnuPG juga dikenal sebagai GPG yang merujuk gpg sebagai
perkakas CLI yang memudahkan integrasi dengan aplikasi lainnya serta
mendukung Secure Socket Shell (SSH).
Sejak 1997 GnuPG merupakan salah satu perangkat lunak bebas yang mana peduli dengan data privasi pengguna. GnuPG dapat digunakan secara bebas, dimodifikasi dan didistribusikan di bawah lisensi GPL.
Manfaat menggunakan kunci GnuPG
Jika menggunakan Kunci GnuPG maka pengguna akan mendapatkan tiga hal berikut ini.
- Integritas data: Kunci GnuPG memastikan integritas konten digital dengan membuat tanda tangan digital. Hal ini memungkinkan pengguna untuk memverifikasi bahwa konten tersebut tidak dirusak selama transit atau proses pengiriman.
- Otentikasi: Kunci GnuPG menyediakan mekanisme untuk mengautentikasi sumber konten digital. Pengguna dapat memverifikasi bahwa konten tersebut berasal dari entitas yang tepercaya dan terverifikasi.
- Komunikasi yang aman: Kunci GnuPG memfasilitasi komunikasi aman dengan mengaktifkan enkripsi. Hal ini memastikan bahwa hanya pihak yang berwenang yang dapat mengakses data terenkripsi.
Selain itu, manfaatnya GnuPG ini sangat berguna jika bekerja dengan
Git. Untuk penerapannya, pengguna akan memasukkan sandi ke dialog
pinentry atau cli yang bertujuan memberikan otentikasi yang asli.
Maka nama pengguna akan tampil disetiap commit dengan perintah ini
akan memperlihatkan validasi tanda tangan digital di setiap memberikan
penanda dengan --gpg-sign.
git commit --gpg-sign -m "menandai dengan kunci gpg"
# atau
git commit -S -m "menandai dengan kunci gpg"
Setelah berhasil, pengguna dapat melihat tanda tangan digital disetiap
commit dengan parameter --show-signature.
git show 1af04a6001 --show-signature
# ^ kode hash
Maka akan terlihat seperti ini.
commit 1af04a60013c8df1b0107ef29755b70feca402da (HEAD -> main, sh/main)
gpg: Signature made Fri 14 Jun 2024 07:44:44 PM WIB
gpg: using EDDSA key 5A131FCDDAC2876802F631D1D7B52C04D9B41849
gpg: Good signature from "Hervy Email Kerja (Test) <kerja@mail.org>" [ultimate]
Primary key fingerprint: 5A13 1FCD DAC2 8768 02F6 31D1 D7B5 2C04 D9B4 1849
Author: Hervy Email Kerja <kerja@mail.org>
Date: Fri Jun 14 19:44:44 2024 +0700
Tertulis Good signature from penanda yang asli pada header log.
Menggunakan GnuPG, Git dan OpenSSH sangat direkomendasikan karena bisa
memberikan jejak validasi secara tertulis.
Dalam artikel ini menjelaskan tentang:
Penulisan artikel ini menggunakan sistem operasi OpenBSD, sebab bertujuan untuk mempersempit cakupan pembahasan agar tidak melebar ke semua sistem operasi (bisa jadi artikel menjadi berhalaman-halaman jika ditulis ke dalam banyak sistem operasi). Alasan kedua, saat ini tidak memasang sistem operasi lain selain OpenBSD.
Tetapi perlu diketahui semua perkakas yang digunakan di tulisan ini baik GnuPG, OpenSSH, dan Git merupakan Open Source sehingga bisa diterapkan di sistem operasi lain seperti Linux-based, Windows atau MacOS. Dalam penjelasan ini, Anda bisa langsung menuju tahapan yang diperlukan saja.
Konfigurasi Kunci GnuPG
Pemasangan GnuPG
Berbagai macam sistem operasi dapat dipasang GnuPG. Pengguna dapat memilih panduan berdasarkan sistem operasi yang digunakan saat ini.
OpenBSD
pkg_add gnupgFreeBSD
pkg install gnupgMengecek versi GnuPG
Hal pertama jika setelah memasang GnuPG adalah mengecek versinya dengan
gpg.
gpg --versiongpg (GnuPG) 2.4.5
libgcrypt 1.10.3
Copyright (C) 2024 g10 Code GmbH
License GNU GPL-3.0-or-later <https://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Home: /home/hervyqa/.gnupg
Supported algorithms:
Pubkey: RSA, ELG, DSA, ECDH, ECDSA, EDDSA
Cipher: IDEA, 3DES, CAST5, BLOWFISH, AES, AES192, AES256, TWOFISH,
CAMELLIA128, CAMELLIA192, CAMELLIA256
Hash: SHA1, RIPEMD160, SHA256, SHA384, SHA512, SHA224
Compression: Uncompressed, ZIP, ZLIB, BZIP2
Sebagai contoh, versi diatas menggunakan versi 2.4.5.
Membuat kunci GnuPG baru
Jika versi yang pengguna gunakan 2.1.17 atau diatasnya maka disarankan
menggunakan perintah terminal ini.
gpg --full-generate-key
Sedangkan jika di bawah versi 2.1.17 maka gunakan --gen-key.
gpg --default-new-key-algo rsa4096 --gen-keyMemilih algoritma kunci
Setelah menjalankan perintah tersebut, maka akan muncul pilihan jenis algoritma kunci yang akan digunakan.
gpg (GnuPG) 2.4.5; Copyright (C) 2024 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.
gpg: directory '/home/hervyqa/.gnupg' created
Please select what kind of key you want:
(1) RSA and RSA
(2) DSA and Elgamal
(3) DSA (sign only)
(4) RSA (sign only)
(9) ECC (sign and encrypt) *default*
(10) ECC (sign only)
(14) Existing key from card
Your selection?
Ada beberapa pilihan dari 1, 2, 3, 4, 9, 10, 14. Tekan enter saja langsung untuk memilih nomer 9 ECC (sign and encrypt) sebagai bawaannya.
Selanjutnya pilih jenis kurva elips yang akan digunakan.
Please select which elliptic curve you want:
(1) Curve 25519 *default*
(4) NIST P-384
(6) Brainpool P-256
Your selection?
Tekan enter, untuk memilih nomer 1 Curve 25519
sebagai bawaannya.
Memilih batas waktu kedaluwarsa kunci GnuPG
Selanjutnya pilih waktu kedaluwarsa kuncinya. Disarankan memilih 0 untuk memilih tanpa waktu kedaluwarsa.
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
Pilih 0, untuk memilih nomer 0 key does not expire
dan pilih y, untuk mengkonfirmasinya.
Key is valid for? (0)
Key does not expire at all
Is this correct? (y/N)Masukkan data pengguna GnuPG
Selanjutnya memasukkan data GnuPG pengguna. Masukkan nama, surel dan komentar. Sebagai contoh:
- Nama asli: Hervy Email Kerja
- Alamat email: kerja@mail.org
- Komentar: Test
Real name: Hervy Email Kerja
Email address: kerja@mail.org
Comment: Test
Maka hasil data pengguna kunci GnuPG akan terlihat seperti ini.
You selected this USER-ID:
"Hervy Email Kerja (Test) <kerja@mail.org>"
Jika ingin mengkonfirmasi, pilih o (okay).
Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? o
Pastikan tidak ada galat/error yang muncul di keluaran terminal. Contoh keluaran yang berhasil seperti di bawah ini.
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: /home/hervyqa/.gnupg/trustdb.gpg: trustdb created
gpg: directory '/home/hervyqa/.gnupg/openpgp-revocs.d' created
gpg: revocation certificate stored as '/home/hervyqa/.gnupg/openpgp-revocs.d/5A131FCDDAC2876802F631D1D7B52C04D9B41849.rev'
public and secret key created and signed.
pub ed25519 2024-06-06 [SC]
5A131FCDDAC2876802F631D1D7B52C04D9B41849
uid Hervy Email Kerja (Test) <kerja@mail.org>
sub cv25519 2024-06-06 [E]Melihat kunci ID GnuPG
gpg --list-secret-keys --keyid-format long/home/hervyqa/.gnupg/pubring.kbx
--------------------------------
sec ed25519/D7B52C04D9B41849 2024-06-06 [SC]
Key fingerprint = 5A13 1FCD DAC2 8768 02F6 31D1 D7B5 2C04 D9B4 1849
uid [ultimate] Hervy Email Kerja (Test) <kerja@mail.org>
ssb cv25519/1CC5EEC8BDE8BC06 2024-06-06 [E]
Dapat diketahui bahwa kunci pengguna yaitu:
- Kunci ID = D7B52C04D9B41849
- Kunci fingerprint = 5A13 1FCD DAC2 8768 02F6 31D1 D7B5 2C04 D9B4 1849
Kunci ID GnuPG dapat diintegrasikan ke pengaturan OpenSSH di langkah selanjutnya.
Konfigurasi Kunci SSH
OpenSSH (OpenBSD Secure Shell) adalah salah satu perkakas untuk pengamanan protokol jaringan yang berbasis Secure Socket Shell. OpenSSH terintegrasi dengan beberapa sistem operasi seperti Windows, macOS dan kebanyakan distribusi Linux.
SSH memiliki beberapa konteks yaitu antara lain:
- Merujuk ke protokol jaringan Secure Socket Shell.
- Merujuk pada perangkat lunak OpenSSH.
- Merujuk pada perusahaan komersil yang bernama SSH.com.
Sebagai klarifikasi, dalam artikel ini menggunakan dua konteks, yaitu nomer 1 dan 2. Nomer 3 tidak mungkin karena bukan ranahnya tulisan ini dan bukan hal teknikal. Agar jelas, artikel hanya menggunakan dua konteks tersebut.
- SSH sebagai protokol jaringan, yang mana yang dimaksudkan adalah Secure Socket Shell. Sehingga yang dimaksudkan Kunci SSH adalah kunci otentikasi yang digunakan untuk protokol jaringan SSH.
- Perangkat lunak yang dapat mengatur, menjalankan dan menghasilkan Kunci SSH adalah Perangkat lunak OpenSSH.
Pemasangan OpenSSH
Sama halnya dengan GnuPG, OpenSSH dapat dipasang di platform mana saja, terutama di GNU/Linux.
OpenBSD
pkg_add opensshFreeBSD
pkg install opensshMengecek versi OpenSSH
Setiap sistem operasi kemungkinan memiliki versi OpenSSH yang berbeda-beda, pengguna dapat melihat versi Git dengan perintah ini.
ssh -VOpenSSH_9.7p1, OpenSSL 3.0.13 30 Jan 2024
Sebagai contoh, versi diatas menggunakan versi 9.7p1.
Mengecek Kunci SSH
Kunci SSH digunakan untuk otentikasi ke kendali jarak jauh (remote control). Hal yang paling sering digunakan untuk login ke git forge seperti sourcehut, github atau gitlab.
Sebelum mengkonfigurasi pastikan dahulu tidak ada kunci SSH di direktori
~/.ssh. Anda dapat mengeceknya dengan perintah terminal ini.
ls -al ~/.sshPermissions Size User Date Modified Name
.rw------- 203 hervyqa 21 Mar 07:09 config
.rw------- 464 hervyqa 21 Mar 07:09 id_ed25519
.rw------- 99 hervyqa 21 Mar 07:09 id_ed25519.pub
.rw------- 3.6k hervyqa 21 Mar 07:09 known_hosts
Umumnya terdapat salah satu dari tiga jenis berkas kunci publik ini:
- id_rsa.pub
- id_ecdsa.pub
- id_ed25519.pub
Jika masih kosong, bisa melanjutkan ke tahap berikutnya untuk membuat kunci SSH yang baru.
Membuat Kunci SSH baru
ssh-keygen -t ed25519 -C "kerja@mail.com"
Jika tidak berhasil, muncul invalid format atau feature not support
maka ada keamanan perangkat keras yang mana perlu menggunakan algoritma
ecdsa-sk.
ssh-keygen -t ecdsa-sk -C "kerja@mail.com"
Langsung tekan enter saja untuk memilih lokasi direktori bawaan.
Generating public/private ed25519 key pair.
Enter file in which to save the key (/home/hervyqa/.ssh/id_ed25519): (ENTER)
Created directory '/home/hervyqa/.ssh'.
Selanjutnya memasukkan kata sandi rahasia pengguna.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Jika berhasil maka terlihat keluaran seperti ini.
Your identification has been saved in /home/hervyqa/.ssh/id_ed25519
Your public key has been saved in /home/hervyqa/.ssh/id_ed25519.pub
The key fingerprint is:
SHA256:KUfzOkl2FyOf5/30nIEH60jrdNV2HafUCl8fdjgVBL8 kerja@mail.com
The key's randomart image is:
+--[ED25519 256]--+
| .ooo|
| .+ |
| o . + +==|
| . + o B.=X|
| . S o +.=E*|
| = + . o=o.|
| + o +.oo|
| .o = .o=|
| .+ . .+|
+----[SHA256]-----+
Perlu diingat, berdasarkan keluaran diatas ada dua berkas yang harus diketahui:
- Kunci privat/rahasia terletak di:
~/.ssh/id_ed25519. - Kunci publik terletak di:
~/.ssh/id_ed25519.pub.
Kunci yang dapat dibagikan yaitu id_ed25519.pub karena bersifat
publik.
Mengganti Email SSH
Jika ingin mengganti nama email SSH yang lama, pengguna dapat menggunakan perintah berikut ini.
ssh-keygen -c -f ~/.ssh/id_ed25519 -C "namabaru@mail.com"
-cmengganti komentar di kunci privat dan publik.-fnama berkas kunci privat.-Cnama komentar dari kunci yang dihasilkan.
Menambahkan Kunci SSH ke ssh-agent
Dengan menambahkan kunci SSH ke ssh-agent, jika bekerja dengan
git/gitui/lazygit di lingkungan terminal maka pengguna hanya
sekali memasukkan kata sandi. Ketika git push/git pull dengan SSH,
maka perintah akan dieksekusi secara langsung tanpa memasukkan kata
sandi untuk kedepannya. Sehingga ssh-agent sangat bermanfaat dan
memudahkan bagi pengguna.
Berikut ini perintah menjalankan ssh-agent di latar belakang.
eval "$(ssh-agent -s)"
Kemudian tambahkan kunci privat dengan ssh-add.
ssh-add ~/.ssh/id_ed25519Konfigurasi Git
Pemasangan Git
Git juga dapat dipasang di platform mana saja. Khususnya di GNU/Linux.
OpenBSD
pkg_add gitFreeBSD
pkg install gitMengecek versi Git
Setiap sistem operasi kemungkinan memiliki versi Git yang berbeda-beda, pengguna dapat melihat versi Git dengan perintah ini.
git --versiongit version 2.44.1
Sebagai contoh, versi diatas menggunakan versi 2.44.1.
Menambahkan Nama Pengguna dan Surel
Tambahkan nama pengguna dan surel yang aktif. Nama pengguna menggunakan
nama yang berasal dari akun git forge seperti Sourehut, Github, Gitlab,
Codeberg atau lainnya. Sebagai contoh akan menggunakan hervyqa dan
kerja@mail.com
git config --global user.name 'hervyqa'
git config --global user.email 'kerja@mail.org'Menambahkan Kunci ID GnuPG ke Git
Selanjutnya tambahkan ID kunci GnuPG ke dalam konfigurasi Git. ID dapat dilihat di cara melihat ID kunci GnuPG di langkah sebelumnya.
git config --global user.signingkey D7B52C04D9B41849
Ager tidak menambahkan --gpg-sign secara manual, maka bisa menambahkan
konfigurasi ini.
git config --global commit.gpgsign true
Sekaligus jika ingin membuat tag tanpa perlu --gpg-sign secara manual.
git config --global tag.gpgsign true
Pengaturan tambahan untuk mengganti nama cabang dari master ke main.
git config --global init.defaultBranch mainMelihat Semua Konfigurasi Git
Jika ingin melihat konfigurasi yang sudah diatur sebelumnya, dapat menggunakan perintah di bawah ini.
git config --global --list
Konfigurasi tersebut juga dapat dilihat di direktori ~/.config/git.
Kurang lebih konfigurasinya terlihat seperti ini.
cat ~/.config/git/config[commit]
gpgSign = true
[init]
defaultBranch = "main"
[tag]
gpgSign = true
[user]
email = "kerja@mail.org"
name = "Hervy Email Kerja"
signingKey = "D7B52C04D9B41849"Akhir kata
Demikian, penjelasan di atas menggunakan CLI sehingga lebih lama dan tidak instan. Pengguna bisa saja menggunakan perangkat lunak GUI (Client) untuk manajemen GnuPG, OpenSSH dan Git. Tetapi tujuannya bukan seperti itu. Harapannya, pembaca dapat mengetahui proses dan perintah CLI-nya agar dapat mengetahui proses secara lebih baik. Tentu menambah literasi dalam penggunaan OpenSSH dan Git sangat membantu untuk proses pengembangan perangkat lunak dan pemrograman.
Info Artikel
Terima kasih
Saya menghargai Anda membaca artikel ini. Jika Anda mempunyai pendapat atau ingin mendiskusikannya, Anda dapat menghubungi saya melalui Email. Jangan ragu untuk terhubung dengan saya di Mastodon atau Bluesky. Dan jaga diri Anda.
Penggunaan
Karya ini dilisensikan di bawah CC BY-NC 4.0.
Kutipan
Kutipan bibtex:
@online{hervyqa_mengk_2024,
author = {Hervy Qurrotul},
title = {Mengkonfigurasi GPG & OpenSSH untuk Git di OpenBSD},
date = {2024-06-19},
url = {https://hervyqa.srht.site/id/blog/mengkonfigurasi-gpg-openssh-untuk-git/},
langid = {id}
}
Untuk atribusi, silakan mengutip karya ini sebagai:
Hervy Qurrotul. 2024. “Mengkonfigurasi GPG & OpenSSH untuk Git di OpenBSD.” June 19, 2024. https://hervyqa.srht.site/id/blog/mengkonfigurasi-gpg-openssh-untuk-git/.