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:
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:
mkdir -p ssh-rumah/.ssh && cd ssh-rumah/.ssh
ssh-keygen -t ed25519 -C "[email protected]" -f id_ed25519 -N ""Output yang Dihasilkan:
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:
ls -l id_ed25519 id_ed25519.pubOutput yang Dihasilkan:
-rw------- 1 z z 411 Oct 13 19:01 id_ed25519
-rw-r--r-- 1 z z 98 Oct 13 19:01 id_ed25519.pubTiga 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:
ssh -T [email protected]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:
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:
Host github-budi
HostName github.com
User git
IdentityFile ~/.ssh/id_ed25519Makna 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:
ssh -G -F config github-budiOutput yang Dihasilkan (baris relevan):
user git
hostname github.com
identityfile ~/.ssh/id_ed25519Dengan 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 .