SSH (Secure Shell) adalah protokol yang digunakan untuk mengakses server secara jarak jauh secara aman. Menggunakan password saja untuk SSH adalah risiko keamanan besar. SSH key memberikan cara yang lebih aman dan nyaman untuk mengakses server tanpa memasukkan password setiap kali login.
Pengertian SSH Key
SSH key adalah sepasang kunci kriptografi yang digunakan untuk autentikasi: private key (kunci privat) yang hanya dimiliki pengguna, dan public key (kunci publik) yang diinstal ke server. Ketika Anda mencoba login, server memverifikasi kepemilikan private key tanpa memerlukan password.
Cara Kerja SSH Key
- Generate key pair — Membuat private key dan public key di komputer Anda
- Copy public key — Mengirim public key ke server yang ingin diakses
- Verifikasi — Saat login, server mengecek apakah private key cocok dengan public key yang tersimpan
- Akses granted — Jika cocok, akses diberikan tanpa password
Mengapa SSH Key Lebih Aman?
- Tidak ada password yang dicuri: Password tidak pernah dikirim melalui jaringan
- Tahan brute-force: Tidak ada password yang bisa ditebak
- Convenience: Login tanpa memasukkan password (terutama dengan key agent)
- Multi-server: Satu key bisa digunakan ke banyak server
- Revokasi mudah: Cukup hapus public key dari server
Alat yang Dibutuhkan
- Komputer lokal (Linux, Mac, atau Windows dengan Git Bash)
- Server Debian 13 dengan akses SSH
- Tidak perlu software tambahan (SSH key sudah built-in)
Generate SSH Key
1. Buat Key Pair
ssh-keygen -t ed25519 -C "[email protected]"Atau untuk kompatibilitas lebih luas:
ssh-keygen -t rsa -b 4096 -C "[email protected]"Penjelasan:
-t ed25519: Algoritma Ed25519 (lebih modern dan aman)-t rsa -b 4096: Algoritma RSA 4096-bit (kompatibel luas)-C: Komentar untuk identifikasi key
2. Ikuti Prompt
Enter file in which to save the key (/home/user/.ssh/id_ed25519): [Enter]
Enter passphrase (empty for no passphrase): [Masukkan passphrase]
Enter same passphrase again: [Ulangi passphrase]Passphrase adalah password tambahan untuk melindungi private key. Sangat disarankan menggunakan passphrase.
3. Lihat Key yang Dihasilkan
# Lihat public key
cat ~/.ssh/id_ed25519.pub
# Lihat private key (JANGAN BAGIKAN!)
cat ~/.ssh/id_ed25519
# Cek semua key
ls -la ~/.ssh/Copy Public Key ke Server
Metode 1: ssh-copy-id (Termudah)
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@server-ipMasukkan password server sekali. Setelah itu, key otomatis terinstal.
Metode 2: Manual
# Copy public key ke server
cat ~/.ssh/id_ed25519.pub | ssh user@server-ip "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"Metode 3: via SCP
scp ~/.ssh/id_ed25519.pub user@server-ip:/tmp/my_key.pub
ssh user@server-ip
cat /tmp/my_key.pub >> ~/.ssh/authorized_keys
rm /tmp/my_key.pubVerifikasi Key Sudah Terinstal
# Coba login (seharusnya tanpa password)
ssh user@server-ipJika tidak diminta password, key sudah berhasil!
Konfigurasi Server
1. Nonaktifkan Password Authentication
Edit /etc/ssh/sshd_config:
nano /etc/ssh/sshd_configUbah menjadi:
# Nonaktifkan password authentication
PasswordAuthentication no
# Aktifkan key authentication
PubkeyAuthentication yes
# Port SSH (ubah untuk keamanan)
Port 2222
# Izinkan user tertentu saja (opsional)
AllowUsers sugeng editor
# Protokol versi 2 saja
Protocol 22. Restart SSH
systemctl restart sshd3. Uji Konfigurasi
# Pastikan SSH masih jalan
ssh -p 2222 user@server-ip⚠️ PENTING: Jangan tutup terminal SSH yang aktif sebelum menguji! Jika error, Anda masih bisa kembali ke terminal asli.
SSH Key untuk Banyak Server
1. Edit Config File
Buat /home/user/.ssh/config:
nano ~/.ssh/configIsi:
# Server 1
Host server1
HostName 192.168.1.100
User sugeng
Port 2222
IdentityFile ~/.ssh/id_ed25519_server1
# Server 2
Host server2
HostName 192.168.1.101
User editor
Port 2222
IdentityFile ~/.ssh/id_ed25519_server2
# Semua server (default)
Host *
IdentityFile ~/.ssh/id_ed25519
IdentitiesOnly yes2. Login dengan Shortcut
ssh server1 # Otomatis pakai konfigurasi server1
ssh server2 # Otomatis pakai konfigurasi server23. Generate Key Spesifik per Server
# Key untuk server 1
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519_server1 -C "server1"
# Key untuk server 2
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519_server2 -C "server2"SSH Agent (Manajemen Key)
SSH Agent menyimpan private key agar tidak perlu memasukkan passphrase setiap kali login.
1. Jalankan SSH Agent
eval "$(ssh-agent -s)"2. Tambahkan Key ke Agent
ssh-add ~/.ssh/id_ed25519
ssh-add ~/.ssh/id_ed25519_server1
ssh-add ~/.ssh/id_ed25519_server23. Lihat Key yang Sudah Ditambahkan
ssh-add -l4. Otomatis di Startup
Tambahkan ke ~/.bashrc:
# Start ssh-agent
if [ -z "$SSH_AUTH_SOCK" ]; then
eval "$(ssh-agent -s)"
fi
# Add default key
ssh-add ~/.ssh/id_ed25519 2>/dev/nullSSH Key dengan Passphrase dan SSH Agent
Untuk keamanan maksimal, gunakan passphrase + SSH agent:
# Generate key dengan passphrase
ssh-keygen -t ed25519 -C "[email protected]"
# Tambahkan ke agent (masukkan passphrase sekali)
ssh-add ~/.ssh/id_ed25519
# Login berikutnya tidak perlu passphrase lagi
ssh user@server-ipBackup SSH Key
1. Backup Private Key
# Salin ke lokasi backup yang aman
cp ~/.ssh/id_ed25519 /backup/id_ed25519_backup
# Enkripsi backup
gpg -c /backup/id_ed25519_backup2. Backup Semua Key
# Backup seluruh folder .ssh
tar -czf backup-ssh-$(date +%Y%m%d).tar.gz ~/.ssh/
# Simpan di tempat yang aman
mv backup-ssh-*.tar.gz /backup/3. Restore
# Restore file
cp /backup/id_ed25519_backup ~/.ssh/id_ed25519
chmod 600 ~/.ssh/id_ed25519Troubleshooting
1. Permission Denied (Publickey)
Penyebab: Key tidak terinstal dengan benar atau permission salah. Solusi:
# Di server, cek permission
ls -la ~/.ssh/
ls -la ~/.ssh/authorized_keys
# Fix permission
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
chmod 644 ~/.ssh/id_ed25519.pub2. Authentication Failed
Penyebab: Key yang benar tidak digunakan atau authorized_keys salah. Solusi:
# Cek debug
ssh -v user@server-ip
# Pastikan key yang benar digunakan
ssh -i ~/.ssh/id_ed25519 user@server-ip
# Cek authorized_keys di server
cat ~/.ssh/authorized_keys3. Host Key Verification Failed
Penyebab: Host key server berubah. Solusi:
# Hapus old host key
ssh-keygen -R server-ip
# Coba lagi
ssh user@server-ip4. Connection Refused
Penyebab: SSH tidak jalan atau port salah. Solusi:
# Cek status SSH di server
systemctl status sshd
# Cek port
ss -tlnp | grep ssh
# Pastikan firewall mengizinkan
ufw status5. Passphrase Terlalu Lama
Penyebab: SSH agent timeout. Solusi:
# Tambahkan key lagi
ssh-add ~/.ssh/id_ed25519
# Atau ubah timeout
ssh-add -t 86400 ~/.ssh/id_ed25519 # 24 jamKesimpulan
SSH key adalah cara paling aman dan nyaman untuk mengakses server. Dengan menggunakan SSH key, Anda menghilangkan risiko password dicuri, menghindari brute-force attacks, dan menikmati login yang lebih cepat. Kombinasi SSH key dengan passphrase dan SSH agent memberikan keamanan dan kenyamanan yang optimal.
Kunci utama:
- Selalu gunakan SSH key, bukan password
- Gunakan passphrase untuk melindungi private key
- Nonaktifkan password authentication setelah semua key terinstal
- Backup private key secara aman
- Gunakan SSH config untuk mengelola banyak server dengan mudah
- Jangan pernah membagikan private key ke siapa pun
Catatan penting: Pastikan selalu menyimpan backup private key di tempat yang aman. Jika Anda kehilangan private key dan tidak punya backup, Anda harus menggunakan akses alternatif (console/physical) untuk memulihkan akses server. Nonaktifkan password authentication secara bertahap — pertama pastikan semua user punya key, lalu matikan password authentication. Jangan menjalankan perintahpasswddanPasswordAuthentication nosecara bersamaan tanpa menguji akses terlebih dahulu.
Ingat: SSH key adalah fondasi keamanan server Anda. Investasikan waktu untuk mengaturnya dengan benar sejak awal, dan Anda akan terhindar dari banyak masalah keamanan di kemudian hari. Setiap server yang Anda kelola harus menggunakan SSH key — ini bukan pilihan, melainkan kebutuhan keamanan yang fundamental.
Dipublikasikan untuk membantu para administrator server mengamankan akses SSH dengan kunci kriptografi.