Sebagian besar orang mengenal SSH lewat cara yang paling sederhana: ketik alamat server, masukkan password, lalu masuk. Cara ini bekerja, dan untuk sesekali mengurus server sudah memadai.
Masalahnya muncul begitu server Anda punya alamat IP publik. Sejak menit pertama online, port SSH akan menerima percobaan login otomatis dari seluruh dunia. Program penebak itu mencoba kombinasi nama pengguna dan password sepanjang hari, tanpa henti. Password yang panjang memang sulit ditebak, tetapi ia tetap satu rahasia yang Anda ketikkan berulang kali. Rahasia itu bisa ikut bocor bila komputer Anda disusupi perekam ketikan.
Di sinilah metode autentikasi kedua masuk. SSH key adalah cara membuktikan identitas ke server memakai sepasang kunci kriptografis, bukan kata sandi yang dihafal. Artikel ini membahas apa itu SSH key, cara kerjanya, serta cara membuatnya dengan ssh-keygen maupun PuTTYgen. Dibahas juga cara memasangnya ke server, dan apa yang harus diperiksa bila server tetap meminta password.
Apa Itu SSH Key?
SSH key adalah sepasang berkas yang saling terhubung secara matematis dan dipakai untuk membuktikan identitas Anda ke server. Sepasang, bukan satu, dan inilah bagian yang paling sering disalahpahami.
Kunci pertama disebut private key (kunci privat). Berkas ini tinggal di komputer Anda dan tidak pernah dikirim ke mana pun. Kunci kedua disebut public key (kunci publik). Berkas inilah yang Anda titipkan ke server, dan ia memang dirancang untuk boleh dilihat siapa saja tanpa membahayakan apa pun.
Hubungan keduanya searah. Public key bisa diturunkan dari private key kapan saja, tetapi kebalikannya tidak bisa dikerjakan dengan komputer yang ada sekarang. Sifat inilah yang membuat public key aman ditempelkan di mana pun. Pembahasan lebih dalam soal sisi kunci privat ini kami tulis terpisah di artikel private key adalah.
Satu hal yang perlu diluruskan sejak awal: SSH key bukan berkas
.ppk. Ekstensi.ppkhanyalah format penyimpanan milik PuTTY di Windows. Di Linux dan macOS, kunci yang sama tersimpan tanpa ekstensi apa pun, dengan nama sepertiid_ed25519. Isinya konsep yang sama, hanya bungkusnya berbeda.
Cara Kerja SSH Key Saat Anda Login
Yang membuat metode ini lebih kuat daripada password bukan panjang kuncinya, melainkan kenyataan bahwa tidak ada rahasia apa pun yang melintas di jaringan.
Saat Anda menyambung, server tidak meminta kunci Anda. Server justru mengirimkan sebuah data acak — sering disebut challenge (tantangan) — dan menunggu jawaban. Komputer Anda menandatangani tantangan itu memakai private key, lalu mengirimkan tanda tangannya saja. Server kemudian memeriksa tanda tangan tersebut dengan public key yang sudah tersimpan di dalam berkas authorized_keys miliknya.

Perhatikan bahwa private key Anda tidak pernah keluar dari komputer. Yang dikirim hanyalah tanda tangan, dan itu hanya berlaku untuk satu tantangan acak tersebut. Menyadapnya di tengah jalan tidak memberi penyadap apa pun yang bisa dipakai ulang.
Konsekuensinya, percobaan login otomatis kehilangan sasaran. Penyerang harus lebih dulu memiliki berkas private key Anda, dan itu berarti ia harus masuk ke komputer Anda.
Jenis SSH Key: Ed25519, RSA, dan ECDSA
Ada beberapa algoritma yang bisa dipakai, dan pilihannya lebih sederhana daripada yang terlihat. Tabel berikut menyusun ketiganya beserta angka bawaan yang kami periksa pada OpenSSH 10.3.
| Jenis kunci | Ukuran bawaan | Kapan dipakai |
|---|---|---|
| Ed25519 | 256 bit | Pilihan utama untuk kunci baru. Kunci publiknya pendek, satu baris, dan cepat diverifikasi. |
| RSA | 3072 bit | Hanya bila ada perangkat atau layanan lama yang belum mendukung Ed25519. |
| ECDSA | 256 bit | Jarang diperlukan. Ed25519 menawarkan kekuatan setara dengan pustaka yang lebih sederhana. |
Ada dua angka di tabel itu yang layak digarisbawahi karena sering ditulis keliru.
Pertama, sejak OpenSSH 9.5 yang rilis 4 Oktober 2023, menjalankan ssh-keygen tanpa opsi -t sama sekali sudah menghasilkan kunci Ed25519. Catatan rilisnya menyebut alasannya singkat saja: kunci publik Ed25519 sangat praktis berkat ukurannya yang kecil. Sebelum versi itu, perintah yang sama menghasilkan RSA. Jadi bila Anda membaca panduan lama yang menyuruh menambahkan -t ed25519 supaya tidak kebagian RSA, saran itu kini hanya berlaku untuk OpenSSH di bawah 9.5.
Kedua, ssh-keygen -t rsa tanpa opsi -b menghasilkan kunci 3072 bit, bukan 2048 bit. Angka 2048 masih sering disebut sebagai bawaan RSA, padahal OpenSSH sudah menaikkannya. Menulis -b 2048 secara eksplisit hari ini justru menurunkan kekuatan kunci Anda dari bawaannya.
Satu jenis kunci lagi, DSA, sebaiknya Anda lupakan sepenuhnya. Algoritma ini terbatas pada private key 160 bit dan digest SHA-1. DSA sudah dinonaktifkan secara bawaan sejak OpenSSH 9.9, lalu dihapus seluruhnya pada OpenSSH 10.0 yang rilis April 2025. Kunci DSA lama tidak akan bekerja lagi di server modern.
Untuk memastikan versi OpenSSH di mesin Anda, jalankan
ssh -V. Perintah ini bekerja sama di Linux, macOS, maupun PowerShell di Windows, dan hasilnya menentukan apakah saran-saran di atas berlaku.
Kelebihan SSH Key Dibanding Password
- Tahan terhadap percobaan tebak berulang: Tidak ada string yang bisa ditebak, sehingga serangan otomatis yang mencoba ribuan kombinasi kehilangan sasaran sepenuhnya.
- Tidak ada rahasia yang melintas di jaringan: Yang dikirim hanya tanda tangan untuk satu tantangan acak, dan tanda tangan itu tidak berguna bila dipakai ulang.
- Bisa dicabut satu per satu: Setiap perangkat bisa memakai kunci berbeda. Ketika satu laptop hilang, Anda cukup menghapus satu baris di
authorized_keystanpa mengganggu akses dari perangkat lain. - Membuka jalan untuk otomasi: Skrip pencadangan atau sinkronisasi seperti rsync bisa berjalan terjadwal tanpa menyimpan password di dalam berkas skrip.
- Dipakai ulang oleh layanan turunan SSH: Transfer berkas lewat SFTP memakai autentikasi yang sama persis, jadi satu kunci sudah cukup untuk keduanya.
Hal yang Perlu Anda Pertimbangkan
Metode ini punya beberapa konsekuensi yang sebaiknya Anda ketahui sebelum mematikan login password.
Kehilangan private key berarti kehilangan akses. Tidak ada tombol "lupa kunci". Bila laptop Anda rusak dan kunci tidak pernah dicadangkan, satu-satunya jalan masuk adalah konsol darurat dari panel penyedia server Anda. Karena itu, pastikan Anda tahu cara membuka konsol itu sebelum mematikan login password, bukan sesudahnya.
Kunci tanpa passphrase setara dengan password yang tersimpan di berkas. Siapa pun yang bisa membaca berkas id_ed25519 di komputer Anda langsung memiliki akses ke server. Passphrase menutup celah ini, dan ssh-agent membuat Anda hanya perlu mengetikkannya sekali per sesi.
Kunci cenderung menumpuk tanpa ada yang mencabut. Berkas authorized_keys bertambah panjang seiring datangnya anggota tim baru. Kunci milik orang yang sudah pindah justru jarang dihapus. Beri komentar penanda di setiap kunci lewat opsi -C, lalu periksa isi berkas itu secara berkala.
Berpindah perangkat butuh langkah tambahan. Kunci di laptop kantor tidak otomatis berlaku di komputer rumah. Kebiasaan yang lebih rapi adalah membuat kunci baru di tiap perangkat, bukan menyalin satu private key ke mana-mana.
Cara Membuat SSH Key dengan ssh-keygen
Ini jalur utama, dan berlaku sama di Linux, macOS, maupun Windows modern. Perintah ssh-keygen sudah tersedia bawaan di Linux dan macOS.
Di Windows, OpenSSH tersedia sejak build 1809 sebagai fitur opsional, dan terpasang bawaan pada Windows Server 2025. Status pastinya berbeda antar instalasi, jadi buka PowerShell dan jalankan ssh -V lebih dulu. Bila perintahnya dikenali, Anda tidak membutuhkan PuTTY sama sekali. Bila tidak, pasang lewat Settings → System → Optional features → OpenSSH Client.
Langkah #1: Membuat pasangan kunci
Untuk generate SSH key, jalankan perintah berikut di terminal atau PowerShell:
ssh-keygen -t ed25519 -C "admin@contoh.com"Opsi -t ed25519 memilih jenis kunci secara eksplisit, dan -C menyisipkan komentar penanda yang nantinya ikut tertulis di server. Komentar ini tidak berpengaruh pada keamanan, tetapi sangat membantu ketika Anda perlu mengenali kunci mana milik perangkat mana di dalam authorized_keys.
ssh-keygen kemudian menanyakan lokasi penyimpanan — tekan Enter untuk menerima bawaannya — lalu passphrase. Di pertanyaan kedua itu Anda sebaiknya mengisi, bukan mengosongkan.
Langkah #2: Memeriksa hasilnya
Perintah tadi menghasilkan dua berkas di dalam folder .ssh pada direktori home Anda:
ls -l ~/.ssh-rw------- 1 user staff 464 Aug 23 08:15 id_ed25519
-rw-r--r-- 1 user staff 103 Aug 23 08:15 id_ed25519.pubBerkas tanpa ekstensi adalah private key Anda, dan izinnya sudah otomatis 600 — hanya pemilik yang boleh membaca dan menulis. Berkas berakhiran .pub adalah public key yang dikirim ke server, isinya satu baris pendek seperti ini:
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDu8KXUIGg3yiYaCzZLSR5YAgtmqBV8QFeb8cMAETZ71 admin@contoh.comTiga bagian yang dipisah spasi: jenis kunci, kunci itu sendiri, dan komentar penanda dari opsi -C tadi.
Langkah #3: Mencatat sidik jari kunci
Setiap kunci punya fingerprint (sidik jari), yaitu ringkasan pendek yang memudahkan Anda mencocokkan kunci tanpa membandingkan seluruh isinya:
ssh-keygen -lf ~/.ssh/id_ed25519.pub256 SHA256:dWi559oeZBKfhO33v9exD1/aE9S4MPmPmlYKfsRDUrQ admin@contoh.com (ED25519)Simpan baris ini. Ketika ada beberapa kunci terdaftar di server, sidik jari inilah pembandingnya.
Bila Anda sudah membuat kunci tanpa passphrase, tidak perlu mengulang dari awal. Perintah
ssh-keygen -p -f ~/.ssh/id_ed25519menambahkan atau mengganti passphrase pada kunci yang sudah ada. Kuncinya sendiri tidak berubah, jadi public key yang terpasang di server tetap berlaku.
Cara Memasang SSH Key ke Server
Memasang kunci berarti menyalin isi public key ke ~/.ssh/authorized_keys milik akun tujuan di server. Ada dua cara, dan yang pertama jauh lebih ringkas.

Langkah #1: Menyalin kunci dengan ssh-copy-id
Perintah ssh-copy-id sudah tersedia bawaan di Linux dan macOS, dan mengerjakan seluruh proses dalam satu baris:
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@alamat-serverAnda akan diminta password akun untuk terakhir kalinya. Setelah itu perintah tersebut membuat folder .ssh bila belum ada, menambahkan public key ke authorized_keys, dan menetapkan izin berkas yang benar. Tiga hal itulah yang paling sering salah bila dikerjakan manual.
Opsi -i menunjuk berkas public key secara eksplisit. Tanpa opsi itu, ssh-copy-id menyalin semua kunci publik yang ditemukannya di folder .ssh.
Langkah #2: Cara manual bila ssh-copy-id tidak tersedia
Bila Anda memakai Windows tanpa ssh-copy-id, atau server hanya bisa diakses lewat konsol web, salin isi berkas .pub secara manual. Masuk ke server, lalu jalankan:
mkdir -p ~/.ssh
chmod 700 ~/.ssh
nano ~/.ssh/authorized_keysTempelkan isi id_ed25519.pub sebagai satu baris utuh, simpan, lalu kunci izinnya:
chmod 600 ~/.ssh/authorized_keysDua perintah chmod di atas sama pentingnya. Folder .ssh berizin 700 dan authorized_keys berizin 600 adalah syarat yang diperiksa server sebelum ia memakai kunci Anda. Yang sebenarnya ditolak adalah berkas yang bisa ditulis grup atau pengguna lain, sehingga 644 pun sebenarnya lolos. Tetapi 600 menutup lebih rapat, dan itulah yang dipasang ssh-copy-id. Bila izinnya terlalu longgar, kunci diabaikan tanpa pesan kesalahan yang jelas.
Untuk memasang lebih dari satu kunci, tambahkan setiap public key pada barisnya sendiri. Jangan pernah memotong satu kunci menjadi beberapa baris.
Langkah #3: Menguji sebelum menutup sesi
Ini langkah yang paling sering dilewati, dan paling mahal akibatnya. Jangan tutup terminal yang sedang terhubung. Buka jendela kedua, lalu uji koneksinya:
ssh -i ~/.ssh/id_ed25519 user@alamat-serverBila Anda masuk tanpa dimintai password akun, kunci sudah bekerja. Sesi lama tadi baru boleh ditutup setelah bukti ini Anda dapatkan. Pola kerja yang sama berlaku ketika Anda mengelola VPS sendiri, tempat kesalahan konfigurasi SSH bisa mengunci Anda dari mesin yang Anda kelola.
Menutup Login Password Setelah Kunci Berjalan
Selama login password masih aktif, pintu lama tetap terbuka bagi percobaan tebak otomatis. Setelah kunci terbukti bekerja, tutup pintu itu.
Buka berkas konfigurasi layanan SSH di server:
sudo nano /etc/ssh/sshd_configCari dan ubah baris berikut menjadi:
PasswordAuthentication no
PubkeyAuthentication yesPeriksa dulu apakah konfigurasinya sah sebelum menerapkannya, karena kesalahan ketik di berkas ini bisa membuat layanan SSH gagal menyala:
sudo sshd -tPerintah itu tidak mengeluarkan apa pun bila konfigurasinya benar. Barulah muat ulang layanannya:
sudo systemctl reload sshdPastikan jendela terminal yang sedang aktif tetap terbuka sampai Anda berhasil masuk lewat jendela baru. Selama sesi lama masih hidup, Anda masih punya jalan untuk mengembalikan konfigurasi bila ada yang keliru.
Cara Generate SSH Key dengan PuTTYgen di Windows
Bila Anda sudah terbiasa memakai PuTTY, SSH key bisa di-generate lewat PuTTYgen yang ikut terpasang bersamanya. Unduh PuTTY hanya dari situs resminya, lalu buka aplikasi PuTTYgen.
Klik tombol Generate di bagian bawah jendela untuk mulai membuat kunci.

Gerakkan kursor secara acak di area kosong sampai bilah hijau di atasnya penuh. Gerakan itu dipakai PuTTYgen sebagai sumber keacakan untuk membentuk kunci.

Setelah kunci terbentuk, isi kolom Key passphrase, lalu klik Save private key untuk menyimpan berkas .ppk di komputer Anda.

Sampai di sini ada satu hal yang wajib Anda perhatikan, dan inilah sumber kegagalan tersering pada jalur PuTTYgen.
Yang ditempelkan ke authorized_keys bukan isi berkas .ppk. Berkas .ppk adalah private key, dan ia harus tetap berada di komputer Anda. Yang harus disalin ke server adalah isi kotak teks di bagian atas jendela PuTTYgen, yang diberi label "Public key for pasting into OpenSSH authorized_keys file". Blok teks itu diawali ssh-ed25519 atau ssh-rsa dan harus disalin utuh sebagai satu baris.
Salin isi kotak tersebut, lalu tempelkan ke ~/.ssh/authorized_keys mengikuti langkah manual di atas. Bila yang Anda salin adalah isi berkas .ppk, server tidak mengenalinya, dan login terus meminta password tanpa petunjuk apa yang salah.
Berkas .ppk sendiri dipakai sebagai kunci di sesi PuTTY, dan bisa dipakai juga oleh WinSCP untuk transfer berkas. Bila Anda membutuhkan kunci yang sama dalam format teks OpenSSH, PuTTYgen bisa mengekspornya lewat menu Conversions → Export OpenSSH key. Perbandingan format berkas kunci kami bahas di artikel PEM adalah.
Kenapa Server Masih Meminta Password Setelah Kunci Dipasang
Ini keluhan paling sering, dan penyebabnya hampir selalu ada di daftar berikut, yang kami susun dari yang tersering.
- Izin folder atau berkas terlalu longgar: Server menolak memakai kunci bila
~/.sshtidak berizin700atauauthorized_keystidak berizin600. Ini penyebab nomor satu. Perbaiki denganchmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys. - Kepemilikan berkas salah: Bila Anda membuat berkas memakai
sudo, pemiliknya menjadi root, sementara yang login adalah akun biasa. Periksa denganls -la ~/.sshlalu perbaiki kepemilikannya dengan chown:chown -R $USER:$USER ~/.ssh. - Public key tertempel terpotong: Editor atau proses salin-tempel kadang memecah kunci menjadi beberapa baris. Satu kunci harus berada di satu baris utuh. Hitung barisnya dengan
wc -l ~/.ssh/authorized_keysdan pastikan jumlahnya sama dengan jumlah kunci yang Anda daftarkan. - Yang tertempel justru private key: Isi
authorized_keysharus diawalissh-ed25519ataussh-rsa. Bila yang terlihat adalah baris-----BEGIN OPENSSH PRIVATE KEY-----, Anda menempelkan berkas yang keliru. - Klien memakai kunci yang berbeda: Bila ada beberapa kunci di komputer Anda, tunjuk yang benar secara eksplisit dengan opsi
-i.
Ketika kelima hal di atas sudah diperiksa dan masalahnya belum juga ketemu, jalankan koneksi dalam mode verbose:
ssh -v -i ~/.ssh/id_ed25519 user@alamat-serverKeluarannya panjang, tetapi yang Anda cari hanya baris yang diawali Offering public key:. Baris itu menunjukkan kunci mana yang ditawarkan komputer Anda, lengkap dengan sidik jarinya. Cocokkan dengan hasil ssh-keygen -lf di Langkah #3 tadi. Bila kunci yang ditawarkan sudah benar tetapi server tetap menolak, masalahnya ada di sisi server. Hampir pasti penyebabnya kembali ke soal izin atau kepemilikan berkas.
Pada shared hosting berbasis cPanel, pengelolaan kunci dilakukan lewat panel, bukan terminal. Langkahnya kami bahas di panduan cara mengakses SSH cPanel.
Pertanyaan yang Sering Diajukan
SSH key untuk apa? Untuk membuktikan identitas Anda ke server tanpa mengirimkan password. Selain login, kunci yang sama dipakai untuk transfer berkas lewat SFTP dan SCP. Kunci itu juga menjalankan skrip terjadwal yang butuh akses server tanpa campur tangan manusia.
Berapa banyak SSH key yang boleh dipasang di satu server?
Tidak ada batas praktis. Berkas authorized_keys bisa memuat banyak kunci, satu per baris. Yang perlu dijaga bukan jumlahnya, melainkan kebersihannya — cabut kunci milik perangkat yang tidak lagi membutuhkan akses.
Bolehkah satu SSH key dipakai untuk beberapa server? Boleh, dan itu praktik yang lazim. Tempelkan public key yang sama ke setiap server. Yang sebaiknya dihindari justru kebalikannya: menyalin satu private key ke banyak perangkat, karena satu perangkat yang bocor membahayakan seluruh server.
Apakah SSH key yang sama bisa dipakai untuk GitHub atau GitLab?
Bisa. GitHub, GitLab, dan Bitbucket menerima public key OpenSSH yang sama persis dengan yang Anda tempelkan ke server. Yang berbeda hanya cara mendaftarkannya — lewat halaman pengaturan akun di layanan tersebut, bukan lewat authorized_keys. Satu kunci Ed25519 sudah cukup untuk server dan seluruh layanan Git Anda.
Apa bedanya berkas .ppk dengan id_ed25519?
Keduanya menyimpan private key, hanya formatnya berbeda. .ppk adalah format milik PuTTY di Windows, sedangkan id_ed25519 adalah format OpenSSH yang dipakai Linux, macOS, dan Windows modern. PuTTYgen bisa mengubah satu format ke format lainnya lewat menu Conversions.
Kalau laptop hilang, apa yang harus saya lakukan?
Masuk dari perangkat lain, lalu hapus baris kunci milik laptop tersebut dari ~/.ssh/authorized_keys — di sinilah komentar penanda dari opsi -C terbukti berguna. Bila tidak ada perangkat lain yang terdaftar, gunakan konsol darurat dari panel penyedia server Anda.
Kesimpulan
SSH key menggantikan password dengan sepasang kunci yang tidak pernah dikirim melintasi jaringan, dan untuk server yang terbuka ke internet, perbedaannya nyata. Buat kunci Ed25519 dengan ssh-keygen, pasang public key-nya lewat ssh-copy-id, uji dari jendela terminal kedua, baru matikan login password.
Bila ada yang tidak berjalan, periksa izin berkas lebih dulu. Menetapkan 700 untuk folder ~/.ssh dan 600 untuk authorized_keys menyelesaikan sebagian besar kasusnya.
Semoga artikel ini membantu.