ssh-keygen: Cara Membuat Kunci SSH, Mendaftarkan Kunci Publik, dan Memakai ssh-copy-id

Lingkungan ujiKeluarga RHELAlmaLinux 9.8akun rootDiperiksa 2026-11-05
Perintah Jaringanssh-keygenssh-copy-idLokasi/usr/bin/ssh-keygen

ssh-keygen adalah perintah OpenSSH yang membuat pasangan kunci privat dan kunci publik untuk koneksi SSH, sekaligus memeriksa sidik jari, mengganti passphrase, dan merapikan known_hosts. Saya membuat kunci ed25519 dan rsa di server AlmaLinux 9, memeriksa sidik jarinya, mengganti passphrase dan komentar, lalu mencoba ssh-copy-id dengan dry-run: yang dikirim ke server hanya satu baris kunci publik dari file .pub.

Nama akun dan path file kunci pada output di bawah adalah nilai contoh, sedangkan sidik jari, kunci publik, dan randomart berasal dari kunci yang dibuat saat menulis artikel ini lalu dihapus. Perintah yang benar-benar mendaftarkan kunci publik ke server hanya ditulis dan tidak dijalankan.

1️⃣ Membuat kunci dengan ssh-keygen: -t ed25519 dan komentar -C

Kunci dibuat dengan bentuk ssh-keygen -t jenis -C komentar. -t adalah jenis kunci, dan -C adalah komentar yang ditempel di akhir kunci publik, biasanya berisi alamat email atau kegunaan kunci. Di bawah ini output lengkap saat file ditentukan dengan -f dan Enter ditekan langsung pada dua pertanyaan passphrase.

ssh-keygen -t ed25519 -C "user@example.com" -f ~/.ssh/id_ed25519
Generating public/private ed25519 key pair.
Enter passphrase for "/home/user/.ssh/id_ed25519" (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/user/.ssh/id_ed25519
Your public key has been saved in /home/user/.ssh/id_ed25519.pub
The key fingerprint is:
SHA256:c73KJh85pPijvy43kS1uaQo77fSsGlE4Wz+aMF+sTy8 user@example.com
The key's randomart image is:
+--[ED25519 256]--+
|                 |
|     .           |
|    o o          |
|     = o   .     |
|    =   Soo .    |
|     = *+*.. .   |
|    o.B.o++ .    |
|    .=o*Eo.+     |
|    o+=@OO=      |
+----[SHA256]-----+

Jika Anda hanya menekan Enter pada pertanyaan passphrase, kunci dibuat tanpa passphrase. Jika -f dihilangkan, sebelum pertanyaan passphrase muncul dulu baris yang menanyakan lokasi penyimpanan file. Di dalam tanda kurung tertulis path default, yaitu .ssh/id_ed25519 di bawah folder home, dan menekan Enter saja akan menyimpan kunci di sana.

randomart di akhir output adalah sidik jari yang diubah menjadi gambar. Gambar yang sama muncul saat kunci dibuat dan saat diperiksa ulang dengan -lv.

ls -l ~/.ssh/id_ed25519 ~/.ssh/id_ed25519.pub
-rw------- 1 user user 411 Oct 29 08:22 /home/user/.ssh/id_ed25519
-rw-r--r-- 1 user user  98 Oct 29 08:22 /home/user/.ssh/id_ed25519.pub

Kunci privat dibuat dengan izin 600 dan kunci publik dengan 644. Simpan kunci privat hanya di komputer Anda sendiri dan jangan dikirim ke mana pun.

cat ~/.ssh/id_ed25519.pub
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJVLiw04ugfXq15n2m8ZDW0OywkRoug8beXw/9VnVY/L user@example.com

Kunci publik adalah satu baris yang berisi jenis kunci, nilai kunci, dan komentar yang dipisahkan spasi. Baris inilah yang masuk ke authorized_keys di server tujuan. Peran tiap file di folder dirangkum dalam bentuk pohon.

~/.sshFolder tempat kunci dan catatan koneksi dikumpulkan · izin 700
id_ed25519Kunci privat · file yang hanya ada di komputer Anda · izin 600
id_ed25519.pubSatu baris kunci publik · dimasukkan ke authorized_keys di server tujuan · izin 644
authorized_keysDaftar kunci publik yang boleh masuk ke server ini (ada di server penerima)
known_hostsHost key server yang pernah Anda sambungi · ssh-keygen -R menghapusnya baris demi baris
configAlias, port, dan file kunci per server (ssh_config)

2️⃣ Opsi ssh-keygen: -f, -N, -b, -q

Membuat kunci sambil menjawab pertanyaan memang praktis saat mengetik manual, tetapi di skrip pertanyaannya harus dihilangkan. Jika file ditentukan dengan -f dan passphrase diberikan dengan -N, kunci langsung dibuat tanpa pertanyaan.

ssh-keygen -t ed25519 -f ~/.ssh/deploy_key -N "" -C "deploy@example.com"
Generating public/private ed25519 key pair.
Your identification has been saved in /home/user/.ssh/deploy_key
Your public key has been saved in /home/user/.ssh/deploy_key.pub
The key fingerprint is:
SHA256:Rhk2/tgn59K8jtvDWJTOLiYnToM8t4gkdaMfu6TJ0oM deploy@example.com
The key's randomart image is:
+--[ED25519 256]--+
|        +        |
|       o +       |
|        +    .   |
|       . +  o    |
|    . o S ++o    |
|   . + +   B+    |
|  .oo * + .=+    |
|  E+o* Boo=++.   |
|   .=.=oo=o++.   |
+----[SHA256]-----+

Dengan tanda kutip kosong setelah -N, kunci dibuat tanpa passphrase, dan lokasi penyimpanan serta sidik jari muncul sekaligus tanpa pertanyaan apa pun.

ssh-keygen -t ed25519 -f ~/.ssh/deploy_key -N ""
Generating public/private ed25519 key pair.
/home/user/.ssh/deploy_key already exists.
Overwrite (y/n)?

Jika dijalankan lagi dengan nama yang sama, setelah already exists muncul pertanyaan apakah file akan ditimpa. Saat n ditekan, tidak ada yang berubah dan perintah selesai dengan kode keluar 1. Agar kunci yang sedang dipakai tidak tertimpa tanpa sengaja, buat kunci baru dengan nama lain.

ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa -N "" -C "user@example.com"
Generating public/private rsa key pair.
Your identification has been saved in /home/user/.ssh/id_rsa
Your public key has been saved in /home/user/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:f+uwCSQjMka1BEHzXADwIWbrlbVRiP6Z4tjnwNwPVAA user@example.com
The key's randomart image is:
+---[RSA 4096]----+
|o=BE*=+.         |
|oo.Oo++          |
| .+o+. .         |
|....  .          |
| .+ o.= S        |
| .o+o= + .       |
|  ++.o  . o .    |
| . o..o  . = .   |
|    o. .  o.o    |
+----[SHA256]-----+

Untuk rsa, -b menentukan panjang kunci. Menurut manual, nilai default-nya 3072 bit; di atas kunci dibuat dengan 4096 bit sehingga RSA 4096 muncul di judul randomart. Manual menyebutkan bahwa ed25519 punya panjang tetap, jadi -b diabaikan.

ssh-keygen -f ~/.ssh/default_key -N "" -C "user@example.com"
Generating public/private ed25519 key pair.
Your identification has been saved in /home/user/.ssh/default_key
Your public key has been saved in /home/user/.ssh/default_key.pub
The key fingerprint is:
SHA256:mwy02fpKxjxEVvLC2EUJeaMIiNFOVS0GwWVjN9v0j4c user@example.com
The key's randomart image is:
+--[ED25519 256]--+
|o+ o+=O=*..      |
|o + .*+B== .     |
| o ..oB+o.. .    |
|  . .+.=     +   |
|      = S   E o  |
|     + + o   .   |
|      B +        |
|     o o         |
|      ...        |
+----[SHA256]-----+

Saat -t dihilangkan, yang dibuat adalah kunci ed25519.

ssh-keygen -q -t ed25519 -f ~/.ssh/backup_key -N "" -C "backup@example.com"; echo rc=$?
rc=0

Dengan -q, semuanya disembunyikan, termasuk sidik jari dan randomart, dan hanya kode keluar yang tersisa. Opsi ini dipakai saat skrip membuat kunci untuk beberapa server.

📌 Opsi utama: hasil dari artikel ini

OpsiFungsiHasil di artikel ini
-t jenisJenis kunci yang dibuatBaris pertama output menampilkan jenisnya, seperti ed25519 atau rsa; jika tidak diisi, ed25519
-C komentarKomentar yang ditempel di akhir kunci publikuser@example.com di akhir kunci publik yang dilihat dengan cat
-f berkasPath file kunciBaris yang menyatakan kunci disimpan di /home/user/.ssh/deploy_key; jika dijalankan lagi dengan nama sama, already exists dan Overwrite (y/n)?
-N passphrasePassphrase baru; tanda kutip kosong berarti tanpa passphraseLokasi penyimpanan dan sidik jari sekaligus, tanpa pertanyaan passphrase
-b bitPanjang kunciJika rsa diberi 4096, judul randomart menampilkan RSA 4096
-qMenyembunyikan semua outputHanya baris rc=0 dari echo yang tersisa
-lMenampilkan sidik jari file kunciSidik jari SHA256 yang sama dari kunci publik dan kunci privat; untuk authorized_keys, satu baris per kunci
-E hashMenentukan jenis hash sidik jariDengan -E md5, sidik jari yang diawali MD5:00:7b:02:5e
-vJika dipakai bersama -l, randomart ikut ditampilkanrandomart yang sama dengan saat kunci dibuat
-yMengambil kunci publik dari kunci privat lalu menampilkannyaSatu baris kunci publik yang sama persis hurufnya dengan file .pub
-pMengganti passphrase kunci privatMuncul baris yang menyatakan kunci disimpan dengan passphrase baru, dan kunci privat bertambah dari 411 menjadi 464 byte
-P passphrasePassphrase lama (yang sedang terpasang)Dengan passphrase yang benar keluar kunci publik, dengan yang salah keluar incorrect passphrase supplied to decrypt private key
-cMengganti komentar; komentar baru diberikan dengan -COld comment: user@example.com dan Comment 'user@laptop' applied
-F hostMencari baris host tersebut di known_hosts# Host 192.0.2.10 found: line 1 dan baris itu sendiri
-R hostMenghapus baris host tersebut dari known_hostsknown_hosts updated dan file asli known_hosts.old; host yang tidak ada menghasilkan not found
-HMengubah nama host dan alamat di known_hosts menjadi hashBaris berubah menjadi diawali |1|, disertai WARNING bahwa file .old menyimpan baris sebelum di-hash

📎 Opsi lainnya: menurut manual resmi

OpsiFungsi
-a putaranJumlah putaran KDF (bcrypt_pbkdf) saat menyimpan kunci privat; makin besar, pemeriksaan passphrase makin lambat dan makin tahan brute force; default 16
-AMembuat host key yang belum ada untuk tiap jenis default (rsa, ecdsa, ed25519) di path default
-BMenampilkan digest bubblebabble dari file kunci
-eMengubah kunci OpenSSH ke format -m (default RFC4716) lalu menampilkannya, untuk program SSH lain
-iMengubah kunci tanpa passphrase berformat -m (default RFC4716) ke format OpenSSH lalu menampilkannya
-m formatMenentukan format kunci (RFC4716, PKCS8, PEM); bersama -p, mengubah kunci privat antara format OpenSSH dan PEM
-r hostMenampilkan record DNS SSHFP untuk nama host tersebut dari kunci publik
-s kunci_CAMenandatangani kunci publik dengan kunci CA untuk membuat sertifikat
-LMenampilkan isi sertifikat
-KMengunduh kunci resident yang tersimpan di autentikator FIDO ke folder saat ini
-Y signMenandatangani file dengan kunci SSH; tanda tangan disimpan dengan .sig di akhir nama file, dan nama penggunaannya diberikan dengan -n

3️⃣ ssh-keygen -l untuk sidik jari dan -y untuk mengambil kunci publik

Jika ada beberapa file kunci, sulit mengetahui hanya dari nama file kunci publik mana yang berpasangan dengan kunci privat mana. Karena sidik jari kunci privat dan kunci publik bernilai sama, pasangan itu bisa dipastikan dengan membandingkan sidik jari kedua file memakai -l.

ssh-keygen -l -f ~/.ssh/id_ed25519.pub
256 SHA256:c73KJh85pPijvy43kS1uaQo77fSsGlE4Wz+aMF+sTy8 user@example.com (ED25519)
ssh-keygen -l -f ~/.ssh/id_ed25519
256 SHA256:c73KJh85pPijvy43kS1uaQo77fSsGlE4Wz+aMF+sTy8 user@example.com (ED25519)

File kunci publik dan file kunci privat menghasilkan sidik jari SHA256 yang sama. Angka 256 di depan adalah panjang kunci, dan tanda kurung di akhir adalah jenis kunci.

ssh-keygen -l -E md5 -f ~/.ssh/id_ed25519.pub
256 MD5:00:7b:02:5e:b8:ba:85:0c:32:d7:15:7e:72:45:f7:bc user@example.com (ED25519)

Dengan -E md5, tampilan berganti ke sidik jari MD5 yang merupakan format lama. Opsi ini dipakai untuk mencocokkan ketika server lama atau panel pengelolaan menampilkan sidik jari MD5.

ssh-keygen -lv -f ~/.ssh/id_ed25519.pub
256 SHA256:c73KJh85pPijvy43kS1uaQo77fSsGlE4Wz+aMF+sTy8 user@example.com (ED25519)
+--[ED25519 256]--+
|                 |
|     .           |
|    o o          |
|     = o   .     |
|    =   Soo .    |
|     = *+*.. .   |
|    o.B.o++ .    |
|    .=o*Eo.+     |
|    o+=@OO=      |
+----[SHA256]-----+

Jika -v ditambahkan, randomart muncul lagi. Gambarnya sama dengan yang tampil saat kunci dibuat.

ssh-keygen -l -f ~/.ssh/authorized_keys
256 SHA256:Rhk2/tgn59K8jtvDWJTOLiYnToM8t4gkdaMfu6TJ0oM deploy@example.com (ED25519)

Jika Anda memberikan file berisi beberapa baris kunci publik seperti authorized_keys, sidik jari keluar satu baris untuk tiap kunci. Cara inilah yang dipakai untuk memeriksa kunci apa saja yang terdaftar di server.

ssh-keygen -y -f ~/.ssh/id_ed25519
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJVLiw04ugfXq15n2m8ZDW0OywkRoug8beXw/9VnVY/L user@example.com

-y mengambil lagi kunci publik dari kunci privat. Jika file .pub terhapus atau hanya kunci privat yang dipindahkan ke komputer lain, cukup simpan output ini ke file. Output-nya sama persis hurufnya dengan file .pub asli.

4️⃣ ssh-keygen -p untuk mengganti passphrase dan -c untuk mengganti komentar

Jika kunci privat diberi passphrase, file itu tidak bisa dipakai tanpa passphrase meskipun bocor. Sebagai gantinya, passphrase harus diketik setiap kali tersambung, sehingga cocok untuk kunci yang dipakai orang secara manual dan tidak cocok untuk kunci skrip yang berjalan otomatis seperti cron.

ssh-keygen -p -f ~/.ssh/id_ed25519 -P "" -N "example-pass"
Key has comment 'user@example.com'
Your identification has been saved with the new passphrase.

-P adalah passphrase lama, -N adalah passphrase baru. Kunci itu belum punya passphrase, jadi -P diberi tanda kutip kosong, lalu muncul dua baris yang menyatakan kunci disimpan ulang dengan passphrase baru. Manual menyebutkan bahwa jika hanya -p yang diberikan tanpa opsi, passphrase lama dan baru ditanyakan bergantian.

ls -l ~/.ssh/id_ed25519
-rw------- 1 user user 464 Oct 29 08:22 /home/user/.ssh/id_ed25519

Setelah passphrase dipasang, file kunci privat bertambah dari 411 menjadi 464 byte.

ssh-keygen -y -f ~/.ssh/id_ed25519 -P "example-pass"
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJVLiw04ugfXq15n2m8ZDW0OywkRoug8beXw/9VnVY/L user@example.com
ssh-keygen -y -f ~/.ssh/id_ed25519 -P "wrongpass"
Load key "/home/user/.ssh/id_ed25519": incorrect passphrase supplied to decrypt private key

Untuk kunci yang memakai passphrase, -y juga perlu passphrase yang diberikan dengan -P. Dengan passphrase yang benar keluar kunci publik yang sama seperti sebelumnya, sedangkan passphrase yang salah berakhir dengan error incorrect passphrase. Manual menyatakan passphrase yang hilang tidak bisa dipulihkan, jadi jika lupa, buat kunci baru dan daftarkan ulang kunci publiknya.

ssh-keygen -c -C "user@laptop" -f ~/.ssh/id_ed25519 -P "example-pass"
Old comment: user@example.com
Comment 'user@laptop' applied
cat ~/.ssh/id_ed25519.pub
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJVLiw04ugfXq15n2m8ZDW0OywkRoug8beXw/9VnVY/L user@laptop

-c mengganti komentar. Komentar lama dan baru muncul masing-masing satu baris, dan komentar di akhir file kunci publik juga berubah menjadi user@laptop. Komentar hanyalah penanda untuk membedakan kunci, jadi nilai kuncinya sendiri tetap sama.

ssh-keygen -p -f ~/.ssh/id_ed25519 -P "example-pass" -N ""
Key has comment 'user@laptop'
Your identification has been saved with the new passphrase.

Untuk menghapus passphrase, beri -N tanda kutip kosong. Dua baris yang sama muncul, dan sesudahnya -y kembali berjalan tanpa -P.

5️⃣ ssh-keygen -R untuk menghapus host key dari known_hosts

Di known_hosts terkumpul host key dari server yang pernah Anda sambungi, satu baris per server. Jika server diinstal ulang dan host key-nya berubah, ssh menolak koneksi karena kuncinya berbeda dari yang tersimpan, dan opsi untuk menghapus baris lama itu adalah -R. known_hosts di bawah adalah file tiga baris yang dibuat dengan alamat contoh dan ditentukan dengan -f.

cat ~/.ssh/known_hosts
192.0.2.10 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKKphFOc7oiKNpIHFTzK/ippCS5U5D+lF3xmXM6dmYjk
server2.example.com,192.0.2.20 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAID3s6oYeTCz7KeYs0f/60/Ix0DhmK4hf1uHCC10TrXyR
[192.0.2.30]:2222 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIC0WmcBD2HIsiSn+tERrbeFIyExAodSEUhE9j5WMpkRW

Setiap baris berisi nama host atau alamat, jenis kunci, dan nilai kunci, berurutan. Baris kedua yang digabung dengan koma berisi nama dan alamat dari server yang sama, sedangkan tanda kurung siku dan titik dua di baris ketiga menandakan port selain 22.

ssh-keygen -F 192.0.2.10 -f ~/.ssh/known_hosts
# Host 192.0.2.10 found: line 1
192.0.2.10 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKKphFOc7oiKNpIHFTzK/ippCS5U5D+lF3xmXM6dmYjk

-F menampilkan baris host tersebut bersama nomor barisnya. Untuk host yang tidak ada, tidak ada yang ditampilkan dan perintah selesai dengan kode keluar 1.

ssh-keygen -R 192.0.2.10 -f ~/.ssh/known_hosts
# Host 192.0.2.10 found: line 1
/home/user/.ssh/known_hosts updated.
Original contents retained as /home/user/.ssh/known_hosts.old
cat ~/.ssh/known_hosts
server2.example.com,192.0.2.20 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAID3s6oYeTCz7KeYs0f/60/Ix0DhmK4hf1uHCC10TrXyR
[192.0.2.30]:2222 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIC0WmcBD2HIsiSn+tERrbeFIyExAodSEUhE9j5WMpkRW

-R menghapus baris host tersebut dan menyisakan file asli sebagai known_hosts.old. Setelah dihapus, hanya dua baris yang tersisa.

ssh-keygen -R 192.0.2.99 -f ~/.ssh/known_hosts
Host 192.0.2.99 not found in /home/user/.ssh/known_hosts
ssh-keygen -R "[192.0.2.30]:2222" -f ~/.ssh/known_hosts
# Host [192.0.2.30]:2222 found: line 2
/home/user/.ssh/known_hosts updated.
Original contents retained as /home/user/.ssh/known_hosts.old

Saat host yang tidak ada ditentukan, hanya muncul satu baris not found. Untuk server dengan port berbeda, tanda kurung siku dan port harus dimasukkan persis seperti tertulis di known_hosts agar ditemukan.

ssh-keygen -H -f ~/.ssh/known_hosts
WARNING: /home/user/.ssh/known_hosts.old contains unhashed entries
Delete this file to ensure privacy of hostnames
/home/user/.ssh/known_hosts updated.
Original contents retained as /home/user/.ssh/known_hosts.old
cat ~/.ssh/known_hosts
|1|JL/knNlx/BnCoOWp5rNeRo3r1rE=|OCPyeFd1rgG8P2QGzrju/V2Y8c4= ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAID3s6oYeTCz7KeYs0f/60/Ix0DhmK4hf1uHCC10TrXyR
|1|AG9QJQvGaQmVsEusSdND1lM9cKI=|Ue0a9suJIzN0yxoJgV7ClLBgSYw= ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAID3s6oYeTCz7KeYs0f/60/Ix0DhmK4hf1uHCC10TrXyR

-H mengubah nama host dan alamat menjadi hash. Opsi ini mencegah file yang bocor membuka server mana saja yang pernah Anda sambungi, dan nama serta alamat yang tadinya digabung dengan koma terpecah menjadi dua baris hash. Muncul juga peringatan bahwa file .old masih menyimpan isi sebelum di-hash.

ssh-keygen -F server2.example.com -f ~/.ssh/known_hosts
# Host server2.example.com found: line 1
|1|JL/knNlx/BnCoOWp5rNeRo3r1rE=|OCPyeFd1rgG8P2QGzrju/V2Y8c4= ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAID3s6oYeTCz7KeYs0f/60/Ix0DhmK4hf1uHCC10TrXyR

Di file yang sudah di-hash pun, -F tetap menemukan baris itu lewat namanya.

6️⃣ ssh-copy-id untuk mendaftarkan kunci publik dan authorized_keys

Membuat kunci saja belum cukup: selama server belum mengenal kunci publik itu, login tetap memakai kata sandi. Tempat untuk mengenalkan kunci publik ke server adalah ~/.ssh/authorized_keys pada akun yang Anda pakai untuk login, dan perintah yang memasukkan satu baris .pub ke file ini adalah ssh-copy-id. Kunci privat tetap di komputer Anda dan hanya satu baris kunci publik yang dikirim. Tekan tombol tahap pada diagram di bawah untuk melihat di mana kedua file berada.

🔐 Alur pasangan kunci ssh-keygen dipakai untuk login
Diagram penjelasan
🔍 Tahap
$ ssh-keygen -t ed25519 -C user@example.comssh-copy-id -i ~/.ssh/id_ed25519.pub user@192.0.2.10ssh -i ~/.ssh/id_ed25519 user@192.0.2.10
💻 Komputer saya ~/.ssh
🔒id_ed25519Kunci privat · tidak dikirim ke luar
🔑id_ed25519.pubSatu baris kunci publik · disalin ke server
➜Belum ada di serverSatu baris kunci publik disalinServer memeriksa dengan kunci publik
🖥️ Server ~/.ssh/authorized_keys
📄KosongLogin hanya dengan kata sandi
🔑ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJVLiw04ugfXq15n2m8ZDW0OywkRoug8beXw/9VnVY/L user@example.comKunci publik terdaftar · hanya kunci privat pasangan baris ini yang bisa masuk
ssh-keygen membuat kunci privat dan kunci publik sebagai satu pasangan. Kunci privat hanya disimpan di ~/.ssh pada komputer Anda, dan kunci publik adalah satu baris di file .pub. Pada tahap ini belum ada apa pun di server, jadi login hanya bisa dengan kata sandi.
ssh-copy-id menambahkan satu baris kunci publik ke akhir ~/.ssh/authorized_keys di server. Kunci privat tidak ikut disalin. Kunci publik tidak perlu dirahasiakan, jadi baris yang sama boleh dimasukkan ke beberapa server.
Saat tersambung, server memakai kunci publik di authorized_keys untuk memeriksa tanda tangan dari kunci privat Anda. Jika pasangannya cocok, Anda login tanpa kata sandi; di komputer yang tidak memiliki file kunci privat, kata sandi tetap ditanyakan meskipun akunnya sama.
ssh-copy-id -n -i ~/.ssh/deploy_key.pub -o ConnectTimeout=3 user@192.0.2.10
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/user/.ssh/deploy_key.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed

/usr/bin/ssh-copy-id: ERROR: ssh: connect to host 192.0.2.10 port 22: Connection timed out

-n adalah dry-run, jadi tidak ada yang ditulis ke server. Meski begitu, ssh-copy-id lebih dulu mencoba login dengan kunci itu untuk menyaring kunci yang sudah terdaftar, dan karena 192.0.2.10 adalah alamat untuk dokumentasi, koneksi tidak terjadi dan perintah berakhir dengan timed out. Opsi setelah -o diteruskan apa adanya ke ssh.

ssh-copy-id -n -f -i ~/.ssh/deploy_key.pub -o ConnectTimeout=3 user@192.0.2.10
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/user/.ssh/deploy_key.pub"
=-=-=-=-=-=-=-=
Would have added the following key(s):

ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKKphFOc7oiKNpIHFTzK/ippCS5U5D+lF3xmXM6dmYjk deploy@example.com
=-=-=-=-=-=-=-=

-f adalah mode paksa yang melewati pemeriksaan ini. Jika dipakai bersama -n, satu baris kunci publik yang akan masuk ke server muncul di bawah Would have added. Baris itu sama dengan isi file .pub.

ssh-copy-id -i ~/.ssh/id_ed25519.pub user@192.0.2.10

Pendaftaran yang sebenarnya dilakukan dengan perintah ini tanpa -n. Menurut skrip ssh-copy-id dan manualnya, perintah ini menanyakan kata sandi akun itu sekali, menambahkan kunci publik ke akhir ~/.ssh/authorized_keys di server, lalu menampilkan Number of key(s) added: 1. Jika file dan foldernya belum ada, keduanya dibuat, dan jika kunci yang sama sudah ada, kunci itu dilewati.

ssh-copy-id -i ~/.ssh/id_ed25519.pub -p 2222 user@192.0.2.10

Jika port bukan 22, berikan dengan -p.

Di lingkungan tanpa ssh-copy-id, tambahkan sendiri satu baris kunci publik ke authorized_keys di server. Login ke server dengan kata sandi, lalu ikuti urutan di bawah. Output-nya diperiksa dengan menambahkan file .pub di server yang sama; untuk server lain, salin baris dari file .pub dan tambahkan dengan echo.

mkdir -p ~/.ssh
chmod 700 ~/.ssh

Jika folder .ssh belum ada, buat foldernya dan atur izinnya menjadi 700.

cat ~/.ssh/deploy_key.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
cat ~/.ssh/authorized_keys
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKKphFOc7oiKNpIHFTzK/ippCS5U5D+lF3xmXM6dmYjk deploy@example.com
ls -l ~/.ssh/authorized_keys
-rw------- 1 user user 100 Oct 29 08:22 /home/user/.ssh/authorized_keys

Satu baris kunci publik sudah masuk ke authorized_keys dengan izin 600. Bagian StrictModes di manual sshd_config menyebutkan bahwa dengan pengaturan default, sshd lebih dulu memeriksa izin file pengguna dan tidak menerima login jika izinnya bisa ditulis siapa saja.

ssh -i ~/.ssh/id_ed25519 user@192.0.2.10

Setelah pendaftaran selesai, sambungkan dengan kunci privat. Jika nama kuncinya nama default seperti id_ed25519, ssh menemukannya sendiri; jika namanya lain seperti deploy_key, tentukan file dengan opsi ssh -i.

🔲 Simulator perintah ssh-keygen

Di simulator di bawah, Anda bisa mengetik sendiri ssh-keygen untuk membuat kunci, memeriksa sidik jari, mengganti passphrase, merapikan known_hosts, sampai mencoba ssh-copy-id. Sidik jari dan kunci publik adalah nilai contoh yang sama dengan artikel, dan ssh-copy-id hanya meniru pendaftaran ke server virtual.

Simulator perintah ssh-keygenOpenSSH 9.9p1 · user
[root@server work]#
Gunakan tombol ↑↓ pada keyboard untuk memanggil kembali perintah yang diketik sebelumnya.

🔢 FAQ & Konten yang Direkomendasikan

Nilai default ssh-keygen adalah ed25519, dan kuncinya pendek: satu baris kunci publik hanya 98 byte. Kunci publik rsa 4096 bit berukuran 742 byte; rsa dipakai untuk tersambung ke server atau perangkat lama yang tidak menerima ed25519.

Boleh. Menurut manual ssh, ssh hanya otomatis mencari nama default seperti ~/.ssh/id_ed25519 dan ~/.ssh/id_rsa, jadi nama lain harus ditentukan dengan -i saat tersambung atau ditulis di IdentityFile pada ~/.ssh/config.

Menurut manual sshd_config, ubah PasswordAuthentication menjadi no lalu minta sshd membaca ulang pengaturannya. Matikan setelah Anda memastikan lebih dulu di terminal lain bahwa login dengan kunci berhasil. Jika dimatikan sebelum diperiksa, Anda bisa tidak masuk baik dengan kata sandi maupun kunci dan terkunci di luar server.

ℹ️ Pemberitahuan Afiliasi
Konten di situs ini berisi tautan afiliasi. Jika pengunjung membeli produk atau layanan melalui tautan tersebut, situs ini menerima komisi dari penjual. Harga yang dibayar pembeli(turun saat ada diskon promo ↓), tidak naik karena hal ini. Harga, diskon, dan informasi stok yang ditampilkan berlaku pada saat penulisan dan bisa berbeda dengan kondisi sebenarnya, jadi pastikan kembali di situs penjual sebelum membeli. Pemilihan dan penilaian produk dibuat berdasarkan standar kami sendiri, dan ada tidaknya komisi tidak memengaruhi urutan maupun isi penilaian.

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *

Buktikan bahwa Anda manusia: 9   +   6   =