Terminal nyaman dan editor siap — rintangan berikutnya muncul pada git push pertama: platform menanyakan kredensial. Jalur HTTPS menuntut personal access token , sedangkan jalur SSH menuntut sesuatu yang kita siapkan sekali saja: pasangan kunci. Setelah kunci terpasang, push dan pull berjalan tanpa satu ketikan kredensial pun. Chapter ini memandu setup dari nol — membuat kunci, mengatur izin berkasnya, mendaftarkannya ke platform, menguji koneksi, lalu merapikannya lewat ~/.ssh/config — dengan kejujuran soal bagian mana yang diuji nyata di sandbox dan bagian mana yang dijelaskan dari dokumentasi resmi.

Membuat Pasangan Kunci #

Perintah pembuatnya satu baris:

bash
ssh-keygen -t ed25519 -C "[email protected]"

Dua bagiannya: -t ed25519 memilih algoritma kunci modern yang kecil dan cepat diverifikasi, sedangkan -C menempelkan komentar pelacak — biasanya alamat email — supaya kunci mudah dikenali di daftar perangkat platform nanti. Bentuk interaktifnya menanyakan dua hal: lokasi penyimpanan (bawaan ~/.ssh/id_ed25519, cukup tekan Enter) dan passphrase opsional. Sandbox menjalankan bentuk ekuivalen yang menjawab keduanya lewat flag — -f menunjuk lokasi, -N "" mengosongkan passphrase — agar bisa dijalankan otomatis:

bash
mkdir -p ssh-rumah/.ssh && cd ssh-rumah/.ssh
ssh-keygen -t ed25519 -C "[email protected]" -f id_ed25519 -N ""

Output yang Dihasilkan:

text
Generating public/private ed25519 key pair.
Your identification has been saved in id_ed25519
Your public key has been saved in id_ed25519.pub
The key fingerprint is:
SHA256:U73b/++vI+SA240eWCavNwPM3aNw2z7xRihtUU9NlIY [email protected]
The key's randomart image is:
+--[ED25519 256]--+
|              .o=|
|           . E.oo|
|          . ...o |
|         .  ..  .|
|       oSooo.o   |
|        *B= Oo.  |
|        .*o%.=.  |
|        ..O.* +. |
|        .o.+.+.+X|
+----[SHA256]-----+

Bedah singkatnya: baris pertama mengonfirmasi pasangan kunci dibuat; dua baris “has been saved” mencatat lokasinya — id_ed25519 kunci privat yang tidak boleh meninggalkan mesin, id_ed25519.pub kunci publik yang justru akan kita sebar ke platform. Baris fingerprint adalah identitas ringkas kunci, dan randomart visualisasinya. Kunci ed25519 selalu acak per pembuatan — fingerprint di mesin kita pasti berbeda dari contoh di atas, dan itulah seharusnya. Bedah lengkap per baris pernah kita kerjakan di Membuat dan Menggunakan SSH Key .

Izin Berkas yang Wajib Benar #

OpenSSH menolak memakai kunci privat yang izin berkasnya terlalu terbuka. Cek hasil pembuatan:

bash
ls -l id_ed25519 id_ed25519.pub

Output yang Dihasilkan:

text
-rw------- 1 z z 411 Oct 13 19:01 id_ed25519
-rw-r--r-- 1 z z 98 Oct 13 19:01 id_ed25519.pub

Tiga digit pertama pola izin itulah kuncinya: -rw------- (600) berarti hanya pemilik yang boleh membaca kunci privat, sedangkan -rw-r--r-- (644) membiarkan kunci publik terbaca siapa pun. Nama pemilik z z menyesuaikan pengguna mesin. Bila kelak kunci privat tercatat lebih longgar, obatnya chmod 600 ~/.ssh/id_ed25519 — dan direktori ~/.ssh idealnya chmod 700.

Mendaftarkan Kunci Publik ke Platform #

Pendaftaran menempelkan teks kunci publik ke akun kita di platform; alurnya di sisi web dan tidak bisa didemokan di sandbox, jadi kita jelaskan langkahnya: tampilkan isinya dengan cat ~/.ssh/id_ed25519.pub (satu baris panjang berawalan ssh-ed25519), salin seluruhnya, lalu di GitHub buka avatar → Settings → SSH and GPG keys → New SSH key, tempel pada kolom Key, beri judul yang menjelaskan mesinnya, dan simpan. GitLab menempatkannya di avatar → Edit profile → SSH Keys. Panduan resminya ada di dokumentasi GitHub .

Menguji Koneksi #

Ujian koneksi ke GitHub cukup satu perintah:

bash

Perintah ini tidak dijalankan di mesin latihan Course — pengujian sungguhan menuntut akun GitHub nyata, dan sandbox tidak memilikinya. Perilakunya terdokumentasi resmi: pertama kali terhubung, SSH menampilkan fingerprint kunci server dan menanyakan Are you sure you want to continue connecting (yes/no/[fingerprint])? — ketik yes agar fingerprint tersimpan ke ~/.ssh/known_hosts dan pertanyaan tak muncul lagi. Bila kunci kita terdaftar dengan benar, GitHub menjawab:

text
Hi budi-santoso! You've successfully authenticated, but GitHub does not provide shell access.

Pesan “does not provide shell access” normal — GitHub hanya mengizinkan operasi Git lewat SSH, bukan shell interaktif. GitLab memakai pola yang sama dengan ssh -T [email protected], menyambut dengan nama pengguna. Detailnya di panduan pengujian koneksi resmi .

Alias di ~/.ssh/config #

Berkas ~/.ssh/config memetakan alias ke kombinasi server + kunci, sehingga kita tidak perlu mengetik alamat lengkap. Isi berikut kita uji nyata di sandbox:

text
Host github-budi
  HostName github.com
  User git
  IdentityFile ~/.ssh/id_ed25519

Makna tiap barisnya: Host github-budi mendefinisikan alias; HostName alamat server sesungguhnya; User git nama pengguna SSH yang dipakai platform — bukan nama akun kita, semua orang “login” sebagai git; IdentityFile kunci privat untuk koneksi ini. Opsi ssh -G menampilkan konfigurasi yang terpecahkan tanpa benar-benar terhubung — cara aman memverifikasi berkas terbaca:

bash
ssh -G -F config github-budi

Output yang Dihasilkan (baris relevan):

text
user git
hostname github.com
identityfile ~/.ssh/id_ed25519

Dengan alias ini, remote cukup ditulis github-budi:budi-santoso/katalog-film.git — lebih pendek dari [email protected]:... dan otomatis memakai kunci yang benar saat banyak kunci hidup di satu mesin.

Troubleshooting Umum #

Galat yang paling sering muncul adalah Permission denied (publickey) — SSH mencoba semua kunci yang diizinkan dan tidak ada yang diterima server. Tiga penyebab klasiknya: izin berkas kunci privat terlalu terbuka (cek ls -l, obat chmod 600), kunci publik belum terdaftar atau terdaftar di akun lain, dan IdentityFile menunjuk jalur yang salah (cek ssh -G). Flag -v pada ssh -vT [email protected] membuat SSH menceritakan tiap kunci yang dicoba; baris yang ditolak langsung menunjuk penyebabnya.

Kini mesin kita bisa membuktikan identitasnya ke platform. Autentikasi berikutnya menyangkut karya yang kita dorong: tanda tangan GPG yang membuktikan commit lahir dari tangan kita. Lanjut ke Menyiapkan GPG .