Pengaturan SSH Key untuk Akses Server yang Aman

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

  1. Generate key pair — Membuat private key dan public key di komputer Anda
  2. Copy public key — Mengirim public key ke server yang ingin diakses
  3. Verifikasi — Saat login, server mengecek apakah private key cocok dengan public key yang tersimpan
  4. 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

bash
ssh-keygen -t ed25519 -C "[email protected]"

Atau untuk kompatibilitas lebih luas:

bash
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

bash
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

bash
# 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)

bash
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@server-ip

Masukkan password server sekali. Setelah itu, key otomatis terinstal.

Metode 2: Manual

bash
# 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

bash
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.pub

Verifikasi Key Sudah Terinstal

bash
# Coba login (seharusnya tanpa password)
ssh user@server-ip

Jika tidak diminta password, key sudah berhasil!

Konfigurasi Server

1. Nonaktifkan Password Authentication

Edit /etc/ssh/sshd_config:

bash
nano /etc/ssh/sshd_config

Ubah menjadi:

ini
# 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 2

2. Restart SSH

bash
systemctl restart sshd

3. Uji Konfigurasi

bash
# 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:

bash
nano ~/.ssh/config

Isi:

kode
# 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 yes

2. Login dengan Shortcut

bash
ssh server1    # Otomatis pakai konfigurasi server1
ssh server2    # Otomatis pakai konfigurasi server2

3. Generate Key Spesifik per Server

bash
# 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

bash
eval "$(ssh-agent -s)"

2. Tambahkan Key ke Agent

bash
ssh-add ~/.ssh/id_ed25519
ssh-add ~/.ssh/id_ed25519_server1
ssh-add ~/.ssh/id_ed25519_server2

3. Lihat Key yang Sudah Ditambahkan

bash
ssh-add -l

4. Otomatis di Startup

Tambahkan ke ~/.bashrc:

bash
# Start ssh-agent
if [ -z "$SSH_AUTH_SOCK" ]; then
    eval "$(ssh-agent -s)"
fi

# Add default key
ssh-add ~/.ssh/id_ed25519 2>/dev/null

SSH Key dengan Passphrase dan SSH Agent

Untuk keamanan maksimal, gunakan passphrase + SSH agent:

bash
# 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-ip

Backup SSH Key

1. Backup Private Key

bash
# Salin ke lokasi backup yang aman
cp ~/.ssh/id_ed25519 /backup/id_ed25519_backup

# Enkripsi backup
gpg -c /backup/id_ed25519_backup

2. Backup Semua Key

bash
# 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

bash
# Restore file
cp /backup/id_ed25519_backup ~/.ssh/id_ed25519
chmod 600 ~/.ssh/id_ed25519

Troubleshooting

1. Permission Denied (Publickey)

Penyebab: Key tidak terinstal dengan benar atau permission salah. Solusi:

bash
# 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.pub

2. Authentication Failed

Penyebab: Key yang benar tidak digunakan atau authorized_keys salah. Solusi:

bash
# 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_keys

3. Host Key Verification Failed

Penyebab: Host key server berubah. Solusi:

bash
# Hapus old host key
ssh-keygen -R server-ip

# Coba lagi
ssh user@server-ip

4. Connection Refused

Penyebab: SSH tidak jalan atau port salah. Solusi:

bash
# Cek status SSH di server
systemctl status sshd
# Cek port
ss -tlnp | grep ssh
# Pastikan firewall mengizinkan
ufw status

5. Passphrase Terlalu Lama

Penyebab: SSH agent timeout. Solusi:

bash
# Tambahkan key lagi
ssh-add ~/.ssh/id_ed25519
# Atau ubah timeout
ssh-add -t 86400 ~/.ssh/id_ed25519  # 24 jam

Kesimpulan

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 perintah passwd dan PasswordAuthentication no secara 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.

Artikel Terkait