Hemat 15% untuk semua layanan hosting

Uji kemampuanmu dan dapatkan Diskon pada paket hosting apa saja

Gunakan kode: Skills Memulai
Bagian FAQ
Administrasi DNS Linux

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/

FileTujuan
id_rsaKunci privat RSA default
id_rsa.pubKunci publik RSA yang sesuai
id_ecdsaKunci privat ECDSA
id_ed25519Kunci privat Ed25519 (direkomendasikan)
id_*.pubRekan kunci publik untuk kunci privat apa pun
authorized_keysDaftar kunci publik yang diizinkan untuk masuk ke akun ini
known_hostsSidik jari server yang sebelumnya terhubung
configKonfigurasi 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/

FileTujuan
ssh_host_rsa_keyRSA host private key
ssh_host_rsa_key.pubRSA host public key
ssh_host_ecdsa_keyECDSA host private key
ssh_host_ecdsa_key.pubECDSA host public key
ssh_host_ed25519_keyEd25519 host private key
ssh_host_ed25519_key.pubEd25519 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@host

Menggunakan ~/.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_key

Dengan 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 langsung
  • scp — secure file copy
  • rsync — file synchronization over SSH
  • git — 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_keys

File 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/config

Tabel Referensi Izin

PathIzin yang DiperlukanOktal
~/.ssh/Baca/tulis/eksekusi pemilik saja700
~/.ssh/authorized_keysBaca/tulis pemilik saja600
~/.ssh/id_rsa (kunci privat)Baca/tulis pemilik saja600
~/.ssh/id_rsa.pub (kunci publik)Baca pemilik, baca orang lain644
~/.ssh/configBaca/tulis pemilik saja600

Untuk memperbaiki izin dalam satu perintah:

chmod 700 ~/.ssh && chmod 600 ~/.ssh/* && chmod 644 ~/.ssh/*.pub

Menghasilkan 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_ed25519

Anda 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 -D

Menyalin 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-host

Ini 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@host

Untuk detail yang lebih lengkap:

ssh -vvv user@host

Output 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 -f

Verifikasi 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_keys

Praktik 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/null

4. Nonaktifkan Autentikasi Password

Setelah SSH key dikonfigurasi, nonaktifkan login SSH berbasis password sepenuhnya di /etc/ssh/sshd_config:

PasswordAuthentication no
PubkeyAuthentication yes
PermitRootLogin prohibit-password

Mulai ulang sshd setelah perubahan:

systemctl restart sshd

5. 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

LokasiTipeTujuan
~/.ssh/id_ed25519Kunci privat penggunaAutentikasi klien
~/.ssh/id_ed25519.pubKunci publik penggunaDidistribusikan ke server
~/.ssh/authorized_keysKunci publik yang diotorisasiMengontrol siapa yang dapat masuk
~/.ssh/known_hostsSidik jari serverMencegah serangan MITM
~/.ssh/configKonfigurasi klienPengaturan per-host
/etc/ssh/ssh_host_*Kunci hostIdentitas server
/etc/ssh/sshd_configKonfigurasi daemonPengaturan 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_keys mengontrol 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-agent untuk 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.