Cara Menghasilkan Kunci SSH untuk GitHub
Diterbitkan: 2022-02-05Git dan GitHub adalah alat penting untuk setiap pengembang. Mereka banyak digunakan di hampir setiap jenis proyek pengembangan perangkat lunak.
Ada layanan hosting Git lainnya seperti Gitlab dan Bitbucket, tetapi GitHub adalah pilihan paling populer untuk pengembang. Anda bahkan dapat mengedit profil Anda agar tampak lebih menarik bagi perekrut.
Anda dapat menggunakan Git dan GitHub untuk mengatur proyek Anda, berkolaborasi dengan pengembang lain, dan — tentu saja — di Kinsta.
Tetapi karena Git dan GitHub adalah alat yang terkait namun berbeda, Anda perlu memperbarui alur kerja Anda dengan masing-masing alat tersebut secara konstan.
Sebaiknya gunakan kunci SSH untuk setiap mesin Anda. Jadi, dalam tutorial ini, Anda akan mempelajari apa itu, beberapa kelebihannya, dan cara membuat dan mengonfigurasi kunci SSH GitHub.
Mari kita mulai!
Apa itu Kunci SSH?
Sederhananya, kunci SSH adalah kredensial yang digunakan untuk protokol SSH (Secure Shell) untuk memungkinkan akses aman ke komputer jarak jauh melalui internet. Biasanya, otentikasi itu terjadi di lingkungan baris perintah.
Protokol ini didasarkan pada arsitektur client-server, yang berarti Anda sebagai pengguna (atau "klien") perlu menggunakan perangkat lunak khusus, yang disebut klien SSH, untuk masuk ke server jauh dan menjalankan perintah. Ini pada dasarnya apa yang Anda lakukan saat mengautentikasi melalui terminal ke GitHub.

Tetapi SSH tidak hanya digunakan untuk GitHub. Ini digunakan secara luas oleh platform lain seperti Kinsta, Google Cloud, dan layanan Web Amazon untuk membuat saluran aman untuk mengakses layanan mereka.
Sekarang, menuju ke cara kerja kunci SSH, Anda perlu memahami perbedaan antara kunci publik dan pribadi.
Kunci Publik vs Pribadi
Mari kita mulai dengan dasar-dasarnya.
Protokol SSH menggunakan teknik kriptografi yang disebut enkripsi asimetris . Istilah ini mungkin terdengar rumit dan aneh, tetapi tidak ada yang lebih jauh dari kebenaran.
Pada dasarnya, enkripsi asimetris adalah sistem yang menggunakan sepasang kunci, yaitu kunci publik dan kunci privat .
Seperti yang Anda duga, kunci publik dapat dibagikan dengan siapa saja. Tujuan utamanya adalah untuk mengenkripsi data, mengubah pesan menjadi kode rahasia atau ciphertext. Kunci ini biasanya dikirim ke sistem lain — misalnya, server — untuk mengenkripsi data sebelum mengirimnya melalui internet.
Di sisi lain, kunci pribadi adalah kunci yang harus Anda simpan untuk diri sendiri. Ini digunakan untuk mendekripsi data terenkripsi dengan kunci publik Anda. Tanpa itu, tidak mungkin untuk memecahkan kode informasi terenkripsi Anda.
Metode ini memungkinkan Anda dan server untuk menjaga saluran komunikasi yang aman untuk mengirimkan informasi.
Inilah yang terjadi di latar belakang saat Anda terhubung ke server melalui SSH:
- Klien mengirimkan kunci publik ke server.
- Server meminta klien untuk menandatangani pesan acak yang dienkripsi dengan kunci publik menggunakan kunci pribadi.
- Klien menandatangani pesan dan meneruskan hasilnya ke server.
- Koneksi aman dibuat antara klien dan server.
Sangat penting untuk menjaga kunci pribadi Anda tetap aman dan membaginya dengan siapa pun dalam keadaan apa pun. Mereka benar-benar kunci untuk semua informasi yang dikirimkan kepada Anda.
Menggunakan Kunci SSH Dengan GitHub
Sejak 13 Agustus 2021, Github tidak lagi menerima otentikasi kata sandi untuk akses baris perintah. Ini berarti sekarang Anda perlu mengautentikasi melalui token akses pribadi atau menggunakan kunci SSH (sedikit lebih nyaman).
Inilah yang terjadi ketika Anda mencoba mengautentikasi dengan kata sandi GitHub Anda melalui HTTP di terminal:
Username for 'https://github.com': yourusername Password for 'https://[email protected]': remote: Support for password authentication was removed on August 13, 2021. Please use a personal access token instead. remote: Please see https://github.blog/2020-12-15-token-authentication-requirements-for-git-operations/ for more information. fatal: Authentication failed for 'https://github.com/yourusername/repository.git/'
GitHub memerlukan kunci publik Anda untuk mengizinkan Anda mengedit salah satu repo Anda melalui SSH.
Mari kita lihat bagaimana Anda dapat membuat kunci SSH secara lokal.
Cara Menghasilkan Kunci SSH Secara Lokal
Sekarang setelah Anda memahami sedikit tentang protokol SSH dan perbedaan antara kunci publik dan pribadi, saatnya untuk mengatur saluran SSH aman antara mesin Anda dan repo GitHub Anda.
Sebelum kita melangkah maju, Anda seharusnya sudah memiliki akun GitHub, dan terminal/command Prompt dengan Git terinstal di sistem Anda. Jika Anda menjalankan Windows, pastikan Anda menginstal Git bash, yang memiliki semua alat yang harus Anda ikuti bersama dengan tutorial ini.
Klien OpenSSH adalah perangkat lunak sumber terbuka paling populer yang digunakan untuk terhubung melalui SSH. Anda tidak perlu khawatir dengan sistem operasi Anda karena sudah terinstal secara default di Linux, macOS, dan Windows 10.
Anda perlu menjalankan prompt perintah pada Windows atau terminal pada sistem berbasis Unix untuk menghasilkan kunci SSH lokal. Biasanya, Anda dapat melakukan ini dengan mencari "terminal", "cmd", atau "powershell" di panel aplikasi Anda, lalu mengklik ikon yang muncul.

Setelah melakukan ini, Anda harus memiliki jendela yang mirip dengan gambar berikut.

Jalankan perintah berikut untuk menghasilkan sepasang kunci SSH lokal:
ssh-keygen -t ed25519 -C "[email protected]"
Saatnya memberi tahu Anda sebuah rahasia: Tidak ada yang benar-benar dapat mengingat perintah ini! Sebagian besar pengembang harus mencarinya di Google setiap saat karena:
- Ini adalah perintah yang sangat panjang, dengan angka yang tampak acak dan mudah dilupakan.
- Kami jarang menggunakannya, jadi tidak layak untuk memasukkannya ke memori sebagian besar waktu.
Namun, penting untuk memahami setiap perintah yang kami perkenalkan ke terminal kami, jadi mari kita lihat apa arti setiap bagian dari perintah ini.
- ssh-keygen: Alat baris perintah yang digunakan untuk membuat sepasang kunci SSH baru. Anda dapat melihat benderanya dengan
ssh-keygen help
- -t ed25519: Bendera
-t
digunakan untuk menunjukkan algoritme yang digunakan untuk membuat tanda tangan digital dari pasangan kunci. Jika sistem Anda mendukungnya,ed25519
adalah algoritme terbaik yang dapat Anda gunakan untuk membuat pasangan kunci SSH. - -C "email": Bendera
-c
digunakan untuk memberikan komentar khusus di akhir kunci publik, yang biasanya adalah email atau identifikasi pembuat pasangan kunci.
Setelah Anda mengetikkan perintah ke terminal Anda, Anda harus memasukkan file yang ingin Anda simpan kuncinya. Secara default, itu terletak di direktori home Anda, di folder tersembunyi bernama ".ssh", tetapi Anda dapat mengubahnya ke apa pun yang Anda suka.

Kemudian Anda akan dimintai kata sandi untuk ditambahkan ke pasangan kunci Anda. Ini menambahkan lapisan keamanan ekstra jika, kapan saja, perangkat Anda disusupi. Menambahkan kata sandi tidak wajib, tetapi selalu disarankan.
Seperti inilah keseluruhan prosesnya:

Seperti yang Anda lihat, perintah ini menghasilkan dua file di direktori yang Anda pilih (biasanya ~/.ssh ): kunci publik dengan ekstensi .pub
, dan kunci pribadi tanpa ekstensi.
Kami akan menunjukkan cara menambahkan kunci publik ke akun GitHub Anda nanti.
Tambahkan Kunci SSH ke ssh-agent
Program ssh-agent berjalan di latar belakang, menyimpan kunci pribadi dan frasa sandi Anda dengan aman, dan membuatnya siap digunakan oleh ssh. Ini adalah utilitas hebat yang menyelamatkan Anda dari mengetik frasa sandi setiap kali Anda ingin terhubung ke server.
Karena itu, Anda akan menambahkan kunci pribadi baru Anda ke agen ini. Berikut caranya:
- Pastikan ssh-agent berjalan di latar belakang.
eval `ssh-agent` # Agent pid 334065
Jika Anda mendapatkan pesan yang mirip dengan ini jika semuanya baik-baik saja. Ini berarti ssh-agent berjalan di bawah id proses tertentu (PID).
- Tambahkan kunci pribadi SSH Anda (yang tanpa ekstensi) ke ssh-agent.
ssh-add ~/.ssh/kinsta_keys
Ganti kinsta_keys dengan nama kunci SSH Anda. Jika ini adalah kunci pertama yang Anda buat, itu harus diberi nama “id_algorithm_used”, misalnya, id_ed25519 .
Tambahkan Kunci SSH ke Akun GitHub
Langkah terakhir adalah menambahkan kunci publik Anda ke akun GitHub Anda. Cukup ikuti petunjuk ini:
- Salin kunci publik SSH Anda ke clipboard Anda. Anda dapat membuka file di tempatnya dengan editor teks dan menyalinnya, atau menggunakan terminal untuk menampilkan isinya.
cat ~/.ssh/kinsta_keys.pub # ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJl3dIeudNqd0DPMRD6OIh65tjkxFNOtwGcWB2gCgPhk [email protected]
- Masuk ke GitHub ] dan pergi ke bagian kanan atas halaman, klik di foto profil Anda, dan pilih Pengaturan.
pengaturan GitHub. - Kemudian, di profil pengaturan Anda, klik kunci SSH dan GPG .
Kunci SSH dan GPG. - Klik tombol kunci SSH baru .
Tombol kunci SSH baru. - Berikan kunci SSH baru Anda di GitHub sebuah Judul — biasanya, perangkat tempat Anda akan menggunakan kunci itu. Dan kemudian rekatkan kunci ke area Kunci .
Tambahkan formulir kunci SSH baru. - Tambahkan kunci SSH Anda.
Tambahkan tombol kunci SSH.
Uji Koneksi SSH Dengan Repo Push
Saatnya untuk menguji semua yang telah Anda lakukan sejauh ini. Anda akan mengubah, melakukan, dan mendorong ke salah satu repo yang ada menggunakan SSH untuk memastikan koneksi Anda diatur dengan benar.
Semua paket hosting Kinsta mencakup dukungan 24/7 dari pengembang dan insinyur WordPress veteran kami. Mengobrol dengan tim yang sama yang mendukung klien Fortune 500 kami. Lihat rencana kami!
Sebagai contoh, kami akan memodifikasi situs HTML sederhana yang kami buat di tutorial Git untuk Pengembangan Web kami.
Pertama, kita perlu mengkloning repositori ke mesin lokal kita. Kita bisa pergi ke halaman repo di GitHub dan menyalin alamat SSH yang diberikannya.

Kemudian, kloning repo menggunakan terminal:
git clone [email protected]:DaniDiazTech/HTML-site.git
Sekarang, mari tambahkan tag <h1>
sederhana di file index.html :
... <div class="container my-2"> <h1 class="text-center">A new title!<h1> </div> <div class="container my-3"> ...

Kami tidak menyentuh JavaScript atau CSS apa pun untuk membuat pengeditan ini tetap sederhana. Tetapi jika Anda ahli dengan JavaScript, Anda mungkin menemukan tempat di Kinsta. Periksa keterampilan pengkodean yang Anda butuhkan untuk menjadi bagian dari tim Kinsta.
Setelah melakukan ini, komit perubahan:
git commit -am "Added a simple title"
Dan dorong mereka ke GitHub seperti yang biasa Anda lakukan.
git push
Jika semuanya berjalan dengan baik, selamat! Anda baru saja mengatur koneksi SSH antara mesin Anda dan GitHub.
Kelola Beberapa Kunci SSH untuk Akun GitHub yang Berbeda
Jika Anda memiliki beberapa akun GitHub — katakanlah satu untuk proyek pribadi Anda dan satu untuk pekerjaan Anda — sulit untuk menggunakan SSH untuk keduanya. Anda biasanya memerlukan mesin terpisah untuk mengautentikasi ke akun GitHub yang berbeda.
Tapi ini bisa diselesaikan dengan mudah dengan mengkonfigurasi file konfigurasi SSH.
Mari kita masuk ke dalamnya.
- Buat pasangan kunci SSH lain, dan tambahkan ke akun GitHub Anda yang lain. Ingatlah nama file yang Anda tetapkan untuk kunci baru.
ssh-keygen -t ed25519 -C "[email protected]"
- Buat file konfigurasi SSH. File konfigurasi memberi tahu program ssh bagaimana seharusnya berperilaku. Secara default, file konfigurasi mungkin tidak ada, jadi buatlah di dalam folder .ssh/:
touch ~/.ssh/config
- Ubah file konfigurasi SSH. Buka file konfigurasi dan rekatkan kode di bawah ini:
#Your day-to-day GitHub account Host github.com HostName github.com IdentityFile ~/.ssh/id_ed25519 IdentitiesOnly yes # Work account Host github-work HostName github.com IdentityFile ~/.ssh/work_key_file IdentitiesOnly yes
Sekarang, setiap kali Anda perlu mengautentikasi melalui SSH menggunakan akun kerja atau sekunder Anda, Anda sedikit mengubah alamat SSH repo, dari:
[email protected]:workaccount/project.git
…ke:
[email protected]:workaccount/project.git
Ringkasan
Selamat — Anda telah mempelajari sebagian besar pengetahuan praktis yang Anda perlukan untuk terhubung ke GitHub melalui SSH!
Tutorial ini membahas perlunya protokol SSH, perbedaan antara kunci publik dan pribadi, cara membuat kunci, menambahkannya ke GitHub, dan bahkan mengelola beberapa kunci SSH untuk akun GitHub yang berbeda. Ingatlah bahwa kecuali Anda ingin kehilangan akses ke semuanya, kunci pribadi Anda harus tetap seperti itu: pribadi.
Dengan pengetahuan ini, sekarang Anda siap untuk mengembangkan alur kerja yang sempurna dengan Git dan GitHub. Terus coding!