FlowingDev

Kunci SSH, dijelaskan: paspor digital Anda ke server

Pelajari bagaimana kunci SSH menyediakan autentikasi aman tanpa kata sandi untuk mengakses server jarak jauh dengan menggunakan keajaiban kriptografi kunci publik.

Coba tool-nya: Generator Kunci SSH

Dalam satu kalimat

Kunci SSH adalah sepasang file kriptografi—satu privat dan rahasia, satu lagi publik dan bisa dibagikan—yang memungkinkan Anda membuktikan identitas ke komputer jarak jauh tanpa mengetik kata sandi.

Masalah yang dipecahkan

Di masa-masa awal internet, kalau Anda ingin mengelola server jarak jauh, Anda akan pakai sesuatu seperti Telnet. Anda ketik nama pengguna dan kata sandi, dan keduanya melesat melintasi jaringan dalam bentuk teks biasa yang bisa dilihat siapa saja. Itu sama saja seperti meneriakkan PIN bank Anda di tengah keramaian. Waduh.

Lalu datanglah SSH, si Secure Shell. SSH mengenkripsi seluruh percakapan, yang merupakan sebuah lompatan besar ke depan. Sekarang Anda bisa mengetik kata sandi, dan itu akan diacak dalam perjalanannya ke server. Jauh lebih baik! Tapi kata sandi tetap punya masalah. Bisa jadi lemah, terlupakan, ditebak, atau di-brute-force. Mengelola kata sandi untuk puluhan server dan untuk seluruh tim developer menjadi mimpi buruk keamanan dan logistik. Siapa punya akses ke mana? Apa yang terjadi kalau ada yang keluar dari perusahaan? Apa Anda harus mengubah kata sandi di 50 server dan memberi tahu semua orang kata sandi yang baru?

Inilah masalah yang dirancang untuk dipecahkan oleh kunci SSH. Kunci SSH menggantikan "sesuatu yang Anda tahu" (kata sandi) dengan "sesuatu yang Anda miliki" (kunci privat). Metode ini, yang disebut autentikasi kunci publik, secara drastis lebih aman dan jauh lebih nyaman bagi manusia maupun sistem otomatis. Ibaratnya, ini perbedaan antara punya satu kunci pas yang mudah dicuri dan punya kartu akses unik yang terkunci secara biometrik untuk setiap pintu yang perlu Anda buka.

Cara kerjanya di balik layar

Keajaiban di balik kunci SSH adalah sebuah konsep bernama kriptografi asimetris. Berbeda dengan kata sandi sederhana (yang merupakan rahasia simetris—Anda dan server sama-sama tahu hal yang sama), sepasang kunci SSH terdiri dari dua kunci yang berbeda namun terhubung secara matematis.

Pasangan Kunci Publik-Privat: Kisah Cinta yang Tak Seimbang

Bayangkan Anda punya gembok ajaib dan satu kunci unik. Gembok itu adalah kunci publik Anda. Anda bisa membuat jutaan salinan gembok ini dan memberikannya kepada siapa saja. Anda bisa memajangnya di situs web Anda, mengirimkannya lewat email ke teman-teman, dan menaruhnya di setiap server yang ingin Anda akses. Ini bersifat publik; tidak ada ruginya jika tersebar.

Kunci privat Anda adalah satu-satunya kunci yang bisa membuka gembok merek spesifik itu. Anda menjaga kunci ini seperti nyawa Anda sendiri. Anda menyimpannya di komputer Anda, tidak pernah membagikannya, dan idealnya melindunginya dengan sebuah passphrase.

  • Kunci Privat dapat membuat sebuah tanda tangan digital.
  • Kunci Publik dapat memverifikasi bahwa sebuah tanda tangan dibuat oleh kunci privat pasangannya.

Yang paling penting, kunci publik tidak bisa digunakan untuk mencari tahu kunci privatnya. Hubungan matematisnya hanya bekerja satu arah, makanya disebut "asimetris."

Jabat Tangan Autentikasi

Jadi, bagaimana proses ini berjalan saat Anda mencoba masuk? Katakanlah Anda mengetik ssh user@server.com.

  1. Perkenalan: Komputer Anda (klien) mengetuk pintu server. "Halo, saya ingin masuk sebagai user. Saya yakin kunci publik saya adalah salah satu yang Anda kenali. Ini ID-nya."
  2. Tantangan: Server melihat ke dalam file ~/.ssh/authorized_keys milik user. File ini hanyalah daftar kunci publik yang diizinkan untuk masuk sebagai pengguna tersebut. Server menemukan kunci publik yang cocok. "Ah, saya lihat gembok publikmu! Saya percaya, tapi saya butuh bukti. Untuk membuktikan Anda punya kunci privatnya, tolong tandatangani pesan acak sekali pakai yang baru saja saya buat ini: R2-D2_is_the_true_hero."
  3. Tanda Tangan: Klien Anda menerima tantangan itu. Ia menggunakan kunci privat Anda untuk membuat tanda tangan digital yang unik untuk pesan spesifik tersebut. Kemudian ia mengirimkan tanda tangan ini kembali ke server. Kunci privat Anda sendiri tidak pernah, sekali lagi tidak pernah, meninggalkan komputer Anda.
  4. Verifikasi: Server menerima tanda tangan itu. Ia mengambil kunci publik yang disimpannya dan menggunakannya untuk memverifikasi tanda tangan terhadap pesan tantangan asli. Karena hanya kunci privat Anda yang bisa menghasilkan tanda tangan persis seperti itu untuk pesan persis seperti itu, server tahu bahwa ia sedang berbicara dengan Anda.
  5. Akses Diberikan: Perhitungannya cocok. Server berkata, "Tanda tangan valid. Silakan masuk!" dan memberi Anda sesi shell, semuanya tanpa ada kata sandi yang melintasi jaringan.

Jenis-jenis Kunci: Potret Keluarga (RSA, ECDSA, Ed25519)

Tidak semua kunci diciptakan sama. Mereka menggunakan algoritma matematika yang berbeda untuk menghasilkan pasangan kunci dan tanda tangan. Anda akan sering melihat tiga jenis utama:

Algoritma Intinya Ukuran Kunci (Umum) Kesimpulan
RSA Pemain lama. Berdasarkan sulitnya memfaktorkan bilangan prima yang sangat besar. 2048 atau 4096 bit Masih kuat dan didukung luas, tapi lambat dan butuh kunci besar menurut standar modern.
ECDSA Standar modern. Menggunakan matematika kurva eliptik agar lebih kecil dan cepat. 256 atau 384 bit Pilihan bagus. Kunci ECDSA 256-bit menawarkan keamanan setara kunci RSA 3072-bit.
Ed25519 Jagoan baru yang lagi nge-hits. Jenis spesifik kunci kurva eliptik yang lebih cepat. 256 bit Pilihan terbaik jika didukung. Cepat, aman, dan dirancang untuk tahan terhadap serangan tertentu.

Saat ini, Ed25519 umumnya menjadi pilihan yang direkomendasikan karena performa dan keamanannya yang superior.

Apa itu Fingerprint?

Kunci publik adalah untaian karakter yang panjang dan jelek. Bukan sesuatu yang bisa Anda ingat atau bandingkan dengan mudah. Sebuah fingerprint adalah ringkasan pendek dan unik dari kunci publik, dibuat dengan menjalankan kunci melalui fungsi hashing (seperti SHA256).

SHA256:88+EM65U024w0E7sF2w8w3n98w/L3t8d7f6e5g4h

Ini berfungsi seperti nomor seri yang bisa dibaca manusia. Saat Anda terhubung ke server untuk pertama kalinya, SSH akan menunjukkan fingerprint kunci publik server dan bertanya apakah Anda mempercayainya. Ini adalah satu-satunya kesempatan Anda untuk mencegah serangan "man-in-the-middle" dengan memverifikasi fingerprint itu melalui saluran aman lain (seperti menelepon admin sistem dan membacakannya kepada mereka).

Kisah di dunia nyata

Skrip Deployment Otomatis

Seorang insinyur DevOps, Maya, mengelola 20 server web. Setiap kali dia men-deploy versi baru aplikasi perusahaannya, skripnya harus masuk ke setiap server untuk mengambil kode terbaru dan me-restart layanan. Skrip awalnya memintanya memasukkan kata sandi server sebanyak 20 kali berturut-turut, yang lambatnya minta ampun. Versi berikutnya, dia menanamkan kata sandi secara hardcode di dalam skrip, yang membuat CISO-nya pusing tujuh keliling. Akhirnya, dia membuat satu pasang kunci SSH khusus untuk deployment. Dia menambahkan kunci publiknya ke semua 20 server. Sekarang, skripnya berjalan mulus tanpa hambatan dan aman, masuk ke setiap mesin dalam hitungan detik tanpa intervensi manual apa pun.

Pelajaran: Kunci SSH adalah pilar dari otomatisasi yang aman dan tanpa kata sandi.

Kontraktor yang Selesai Bekerja

Sebuah startup kecil menyewa seorang pekerja lepas, David, untuk proyek tiga bulan. Untuk memberinya akses ke server staging, sang tech lead, Chen, hanya meminta kunci SSH publik David dan menambahkannya ke file authorized_keys di server. David sekarang bisa masuk dengan aman dan melakukan pekerjaannya. Di akhir kontrak, seluruh proses "offboarding" Chen untuk akses server hanya terdiri dari satu perintah: membuka file authorized_keys dan menghapus baris yang berisi kunci David. Akses langsung dicabut dengan bersih, tanpa ada kata sandi bersama yang perlu diubah atau dikhawatirkan.

Pelajaran: Kunci SSH menyediakan kontrol akses yang granular, dapat diaudit, dan mudah dicabut untuk setiap pengguna.

git push Pertama ke GitHub

Seorang developer baru, Sam, baru saja bergabung dengan tim dan melakukan clone pada repositori kode privat mereka. Setelah membuat perubahan pertamanya, dia mencoba git push. Dia disambut dengan eror "Permission denied". Perusahaan itu, seperti banyak perusahaan lain, telah menonaktifkan autentikasi berbasis kata sandi ke GitHub demi keamanan. Wiki internal menginstruksikannya untuk membuat kunci SSH baru, lalu masuk ke pengaturan GitHub-nya dan menempelkan konten kunci publik-nya (id_ed25519.pub) ke bagian "SSH and GPG keys". Setelah itu, dia bisa melakukan push kodenya menggunakan URL SSH repositori (git@github.com:...). GitHub menggunakan mekanisme tantangan-respons yang sama persis untuk memverifikasi bahwa memang benar Sam yang melakukan push kode tersebut.

Pelajaran: Kunci SSH adalah standar untuk autentikasi ke layanan selain akses shell, termasuk sebagian besar platform hosting kode.

Kesalahan dan jebakan umum

  • Membagikan kunci privat Anda. Jangan pernah, sekali lagi, jangan pernah mengirim kunci privat Anda (id_ed25519 atau id_rsa) kepada siapa pun atau mengunggahnya ke mana pun. Itu adalah rahasia Anda. Membagikannya benar-benar mengalahkan tujuan model keamanan ini.
  • Lupa passphrase. Kunci privat Anda hanyalah sebuah file di disk Anda. Jika laptop Anda dicuri, penyerang bisa langsung menyalinnya. Passphrase yang kuat mengenkripsi file ini, memaksa pencuri untuk membobol kata sandi laptop Anda dan passphrase kunci Anda. Ini adalah lapisan pertahanan yang krusial.
  • Menempelkan kunci privat di kolom kunci publik. Ini kesalahan yang mudah terjadi. Anda sedang menyiapkan layanan baru, ia meminta kunci publik Anda, dan Anda tidak sengaja menyalin-tempel konten dari file yang salah. Selalu periksa kembali bahwa kunci yang Anda bagikan berakhiran .pub.
  • Menggunakan kunci lama yang lemah. Membuat kunci RSA 1024-bit di zaman sekarang adalah ide yang buruk. Kunci tersebut berpotensi rentan dibobol oleh penyerang yang punya banyak sumber daya. Tetaplah gunakan standar modern: Ed25519 atau setidaknya kunci RSA 4096-bit.
  • Mengetik "yes" tanpa berpikir. Pertama kali Anda terhubung ke host baru, SSH memperingatkan Anda bahwa keaslian host tidak dapat dipastikan dan menunjukkan fingerprint-nya. Jangan langsung menerimanya begitu saja. Ini adalah momen di mana serangan Man-in-the-Middle bisa terjadi. Verifikasi fingerprint melalui saluran lain jika Anda berada di jaringan yang tidak tepercaya.

Kenapa ini penting bagi Anda

Jika Anda seorang developer, admin sistem, insinyur DevOps, atau siapa pun yang perlu masuk ke komputer jarak jauh, kunci SSH bukan sekadar "bagus untuk dimiliki"—ini fundamental. Ini adalah cara yang profesional, aman, dan efisien untuk mengelola akses mesin.

Anda harus memikirkan tentang kunci SSH ketika:

  • Anda sedang menyiapkan server baru (di cloud atau on-premise).
  • Anda sedang menulis skrip apa pun yang perlu terhubung ke mesin lain (scp, sftp, rsync, git).
  • Anda sedang menyiapkan akses untuk anggota tim baru.
  • Anda terhubung ke GitHub, GitLab, atau Bitbucket.
  • Anda ingin berhenti mengetik kata sandi.

Belajar menggunakan kunci SSH adalah semacam ritual peralihan yang mengubah Anda dari pengguna biasa mesin jarak jauh menjadi operator yang kompeten.

Pelajari lebih dalam

Teori beres. Saatnya praktik — 100% di browser kamu.

Coba tool-nya: Generator Kunci SSH