Di Mana SSH Keys Disimpan di Linux — Dan Cara Mengelolanya dengan Aman
SSH (Secure Shell) adalah salah satu alat paling penting dalam ekosistem Linux. Administrator sistem, developer, dan insinyur DevOps mengandalkannya setiap hari untuk akses server jarak jauh, transfer file aman, otomasi deployment, dan manajemen infrastruktur. Meskipun sebagian besar pengguna berinteraksi dengan SSH melalui perintah terminal sederhana, tulang punggung keamanan sebenarnya terletak pada pasangan kunci SSH — kredensial kriptografi yang memungkinkan autentikasi tanpa kata sandi, alur kerja otomatis, dan kontrol akses yang diperkuat.
Baik Anda mengelola satu instans VPS Hosting atau mengatur akses di seluruh puluhan Dedicated Servers, memahami dengan tepat di mana kunci SSH disimpan — dan cara mengelolanya dengan benar — bukanlah pilihan. Ini adalah persyaratan keamanan dasar.
Panduan ini mencakup semuanya: lokasi penyimpanan kunci default, kunci host di seluruh sistem, konfigurasi khusus, persyaratan izin, dan praktik terbaik untuk manajemen kunci yang aman.
Apa Itu SSH Keys dan Mengapa Mereka Penting?
SSH keys menggunakan kriptografi asimetris untuk mengautentikasi pengguna dan server. Setiap pasangan kunci terdiri dari:
- Private key — disimpan rahasia di mesin klien, tidak pernah dibagikan
- Public key — ditempatkan di server jarak jauh untuk memverifikasi identitas
Ketika Anda terhubung ke server, SSH menggunakan jabat tangan kriptografi untuk memverifikasi bahwa Anda memegang private key yang sesuai dengan public key di server — tanpa pernah mengirimkan private key itu sendiri. Ini secara fundamental lebih aman daripada autentikasi berbasis kata sandi.
Lokasi Penyimpanan Kunci SSH Default (Kunci Pengguna)
Untuk pengguna Linux standar mana pun, kunci SSH disimpan dalam direktori tersembunyi di dalam folder home:
~/.ssh/Ini berkembang menjadi jalur lengkap:
/home/username/.ssh/Untuk pengguna root secara khusus:
/root/.ssh/File Umum Di Dalam ~/.ssh/
| File | Tujuan |
|---|---|
id_rsa | Kunci privat RSA default |
id_rsa.pub | Kunci publik RSA yang sesuai |
id_ecdsa | Kunci privat ECDSA |
id_ed25519 | Kunci privat Ed25519 (direkomendasikan) |
id_*.pub | Rekan kunci publik untuk kunci privat apa pun |
authorized_keys | Daftar kunci publik yang diizinkan untuk masuk ke akun ini |
known_hosts | Sidik jari server yang sebelumnya terhubung |
config | Konfigurasi klien SSH khusus pengguna |
Ketika Anda menjalankan ssh-keygen, kunci ditulis ke direktori ini secara default kecuali Anda secara eksplisit menentukan jalur berbeda selama pembuatan kunci.
Lokasi SSH Key Sistem (Host Keys)
Selain user keys, SSH daemon (sshd) — komponen sisi server — mempertahankan set host keys-nya sendiri. Ini disimpan sistem-lebar di:
/etc/ssh/Host Key Files di /etc/ssh/
| File | Tujuan |
|---|---|
ssh_host_rsa_key | RSA host private key |
ssh_host_rsa_key.pub | RSA host public key |
ssh_host_ecdsa_key | ECDSA host private key |
ssh_host_ecdsa_key.pub | ECDSA host public key |
ssh_host_ed25519_key | Ed25519 host private key |
ssh_host_ed25519_key.pub | Ed25519 host public key |
Host keys ini melayani tujuan yang berbeda dari user keys. Ketika klien terhubung ke server untuk pertama kalinya, server menyajikan host public key-nya. Klien menyimpan fingerprint ini di ~/.ssh/known_hosts. Pada koneksi berikutnya, SSH memverifikasi fingerprint cocok — melindungi dari serangan man-in-the-middle.
> Penting: Host keys dihasilkan secara otomatis selama instalasi SSH server. Anda seharusnya tidak perlu membuat mereka secara manual, tetapi Anda harus tahu di mana mereka berada untuk tujuan audit dan backup.
Lokasi SSH Key Kustom
Anda tidak terbatas pada direktori ~/.ssh/ default. SSH key dapat dihasilkan dan disimpan di mana saja di filesystem. Untuk menggunakan key yang disimpan di lokasi non-default, tentukan secara eksplisit:
ssh -i /path/to/custom_key user@hostMenggunakan ~/.ssh/config untuk Multiple Keys
Mengelola multiple server, project, atau user account menjadi jauh lebih rapi dengan ~/.ssh/config file yang dikonfigurasi dengan baik. Ini memungkinkan Anda untuk menentukan per-host setting termasuk key mana yang akan digunakan:
Host production-server
HostName 203.0.113.10
User deploy
IdentityFile ~/.ssh/production_ed25519
Host staging-server
HostName 203.0.113.20
User deploy
IdentityFile ~/.ssh/staging_ed25519
Host github.com
User git
IdentityFile ~/.ssh/github_keyDengan konfigurasi ini, menjalankan ssh production-server secara otomatis menggunakan key yang benar tanpa flag tambahan apa pun.
Bagaimana SSH Keys Digunakan: Client vs. Server
Outbound Connections (Client Side)
Ketika Anda memulai koneksi SSH, SSH client mencari private keys di ~/.ssh/ secara default. Key-key ini digunakan untuk mengautentikasi Anda ke remote server.
Tools yang menggunakan SSH client keys meliputi:
ssh— akses remote shell langsungscp— secure file copyrsync— file synchronization over SSHgit— ketika menggunakan SSH-based remote repositories
Inbound Connections (Server Side)
Di server, SSH memeriksa file tertentu untuk menentukan user mana yang diizinkan untuk terhubung:
~/.ssh/authorized_keysFile ini berisi satu public key per baris. Setiap entry memberikan izin kepada pemegang private key yang sesuai untuk login sebagai user tersebut.
Contoh praktis: Jika user alice ingin SSH ke server sebagai user webadmin, public key Alice harus ada di /home/webadmin/.ssh/authorized_keys — bukan di home directory Alice sendiri di server tersebut.
Izin File — Penting untuk Keamanan SSH
Di sinilah banyak administrator melakukan kesalahan yang mahal. SSH sengaja ketat tentang izin file. Jika izin terlalu terbuka, SSH akan diam-diam menolak menggunakan kunci Anda atau menolak upaya login sepenuhnya.
Pengaturan Izin yang Diperlukan
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
chmod 600 ~/.ssh/id_ed25519
chmod 644 ~/.ssh/id_ed25519.pub
chmod 600 ~/.ssh/configTabel Referensi Izin
| Path | Izin yang Diperlukan | Oktal |
|---|---|---|
~/.ssh/ | Baca/tulis/eksekusi pemilik saja | 700 |
~/.ssh/authorized_keys | Baca/tulis pemilik saja | 600 |
~/.ssh/id_rsa (kunci privat) | Baca/tulis pemilik saja | 600 |
~/.ssh/id_rsa.pub (kunci publik) | Baca pemilik, baca orang lain | 644 |
~/.ssh/config | Baca/tulis pemilik saja | 600 |
Untuk memperbaiki izin dalam satu perintah:
chmod 700 ~/.ssh && chmod 600 ~/.ssh/* && chmod 644 ~/.ssh/*.pubMenghasilkan SSH Keys dengan Aman
Selalu pilih Ed25519 daripada RSA untuk kunci baru. Ed25519 menawarkan keamanan yang lebih kuat dengan ukuran kunci yang lebih pendek dan performa yang lebih cepat.
ssh-keygen -t ed25519 -C "your_email@example.com"Untuk sistem legacy yang memerlukan RSA, gunakan minimal 4096 bits:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"Selalu atur passphrase saat diminta. Passphrase mengenkripsi private key di disk, sehingga bahkan jika penyerang mendapatkan akses ke filesystem Anda, mereka tidak dapat menggunakan kunci tanpa passphrase.
Mengelola Kunci dengan ssh-agent
Memasukkan passphrase Anda setiap kali menggunakan kunci SSH menjadi tidak praktis. ssh-agent mengatasi hal ini dengan menyimpan kunci yang didekripsi dalam memori selama sesi Anda berlangsung.
Memulai ssh-agent dan Menambahkan Kunci
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519Anda akan diminta memasukkan passphrase sekali saja. Setelah itu, operasi SSH menggunakan kunci yang disimpan secara otomatis.
Perintah ssh-agent yang Berguna
# List currently loaded keys
ssh-add -l
# Remove a specific key from the agent
ssh-add -d ~/.ssh/mykey
# Remove all keys from the agent
ssh-add -DMenyalin Kunci Publik ke Server Jarak Jauh
Cara termudah untuk memasang kunci publik Anda di server jarak jauh adalah dengan ssh-copy-id:
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@remote-hostIni menambahkan kunci publik Anda ke ~/.ssh/authorized_keys di server jarak jauh dan mengatur izin dengan benar secara otomatis.
Jika ssh-copy-id tidak tersedia, lakukan secara manual:
cat ~/.ssh/id_ed25519.pub | ssh user@remote-host "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"Audit dan Debugging Masalah SSH Key
Verbose Connection Logging
Ketika autentikasi SSH gagal, verbose mode mengungkapkan apa yang terjadi:
ssh -v user@hostUntuk detail yang lebih lengkap:
ssh -vvv user@hostOutput ini menunjukkan file identitas mana yang dicoba, apakah agent dikonsultasikan, dan di mana autentikasi gagal.
Periksa SSH Log di Server
Di server jarak jauh, peristiwa autentikasi SSH dicatat ke:
# Debian/Ubuntu
tail -f /var/log/auth.log
# CentOS/RHEL/Fedora
tail -f /var/log/secure
# Systems using journald
journalctl -u sshd -fVerifikasi File authorized_keys Anda
# Check the file exists and has correct permissions
ls -la ~/.ssh/authorized_keys
# View its contents
cat ~/.ssh/authorized_keys
# Count how many keys are authorized
grep -c "ssh-" ~/.ssh/authorized_keysPraktik Terbaik Keamanan SSH Key
Manajemen kunci yang tepat melampaui mengetahui di mana file disimpan. Ikuti praktik ini di setiap sistem yang Anda kelola:
1. Gunakan Satu Kunci Per Tujuan
Jangan pernah menggunakan kembali SSH key yang sama di berbagai lingkungan, klien, atau proyek. Gunakan kunci terpisah untuk akses pribadi, otomasi deployment, dan akses bersama tim.
2. Rotasi Kunci Secara Berkala
Perlakukan SSH key seperti password — rotasi secara berkala, terutama setelah keberangkatan anggota tim atau kemungkinan kompromi.
3. Audit authorized_keys Files
Tinjau secara berkala kunci publik mana yang diotorisasi di setiap server. Hapus kunci apa pun yang milik karyawan lama, otomasi yang sudah usang, atau sumber yang tidak dikenali:
# Find all authorized_keys files on a system
find / -name "authorized_keys" 2>/dev/null4. Nonaktifkan Autentikasi Password
Setelah SSH key dikonfigurasi, nonaktifkan login SSH berbasis password sepenuhnya di /etc/ssh/sshd_config:
PasswordAuthentication no
PubkeyAuthentication yes
PermitRootLogin prohibit-passwordMulai ulang sshd setelah perubahan:
systemctl restart sshd5. Batasi Penggunaan Root Key
Hindari menggunakan root SSH key di berbagai lingkungan. Gunakan akun pengguna yang diaktifkan sudo dengan kunci individual sebagai gantinya.
6. Gunakan Autentikasi Berbasis Sertifikat untuk Skala
Untuk infrastruktur besar, pertimbangkan sertifikat SSH (melalui SSH Certificate Authority) alih-alih mengelola entri authorized_keys individual. Ini secara dramatis menyederhanakan manajemen akses di banyak server.
SSH Keys dalam Lingkungan Cloud dan Hosting
Saat menerapkan server di lingkungan cloud atau hosting terkelola, manajemen kunci SSH menjadi bahkan lebih penting. Sebagian besar platform — termasuk penyedia VPS Hosting — memungkinkan Anda menyuntikkan kunci publik pada saat provisioning, memberikan Anda akses aman segera tanpa pernah menetapkan kata sandi.
Untuk tim yang mengelola beberapa lingkungan, pertimbangkan untuk memasangkan strategi kunci SSH Anda dengan setup VPS Control Panels yang terstruktur, yang dapat menyederhanakan manajemen pengguna dan kontrol akses di seluruh infrastruktur Anda.
Jika Anda menjalankan aplikasi web atau layanan yang memerlukan komunikasi aman di luar SSH, memasangkan setup server Anda dengan SSL Certificates yang dikonfigurasi dengan benar memastikan enkripsi end-to-end untuk semua lalu lintas — bukan hanya akses administratif.
Untuk tim yang mengandalkan Email Hosting bersama infrastruktur server mereka, manajemen kunci SSH meluas ke pengamanan sistem yang menangani email Anda — alasan lain mengapa kebersihan kunci yang konsisten di semua server penting.
Referensi Cepat: Lokasi File Kunci SSH
| Lokasi | Tipe | Tujuan |
|---|---|---|
~/.ssh/id_ed25519 | Kunci privat pengguna | Autentikasi klien |
~/.ssh/id_ed25519.pub | Kunci publik pengguna | Didistribusikan ke server |
~/.ssh/authorized_keys | Kunci publik yang diotorisasi | Mengontrol siapa yang dapat masuk |
~/.ssh/known_hosts | Sidik jari server | Mencegah serangan MITM |
~/.ssh/config | Konfigurasi klien | Pengaturan per-host |
/etc/ssh/ssh_host_* | Kunci host | Identitas server |
/etc/ssh/sshd_config | Konfigurasi daemon | Pengaturan server SSH |
Kesimpulan
Memahami di mana SSH keys disimpan di Linux — dan mengelolanya dengan disiplin — adalah salah satu keterampilan paling penting bagi siapa pun yang bekerja dengan server, baik Anda seorang developer solo atau bagian dari tim operasi besar.
Untuk merangkum poin-poin kunci:
- User keys berada di
~/.ssh/dan digunakan untuk autentikasi sisi klien - Host keys berada di
/etc/ssh/dan mengidentifikasi server ke klien yang terhubung authorized_keysmengontrol akses masuk — audit secara teratur- Izin file tidak dapat ditawar — izin yang salah akan secara diam-diam memecahkan SSH
- Ed25519 adalah jenis kunci pilihan untuk pembuatan kunci baru
- Selalu gunakan frasa sandi dan
ssh-agentuntuk manajemen kunci sehari-hari - Rotasi dan audit kunci sebagai bagian dari kebersihan keamanan rutin Anda
Pada sistem produksi — baik Anda menjalankan Dedicated Servers atau infrastruktur bersama — salah kelola SSH keys adalah salah satu vektor paling umum untuk akses tidak sah. Investasi waktu dalam menyelesaikan ini dengan benar memberikan dividen dalam keamanan, keandalan, dan ketenangan pikiran.
Perlakukan SSH keys Anda dengan perhatian yang sama seperti yang Anda berikan kepada kredensial kritis apa pun. Karena itulah tepatnya apa adanya.
untuk semua layanan hosting