Bagian 4 — Hardening Dasar · Langkah 17 dari 38
SSH Key Auth ( & Ganti Port, Opsional)
Login dengan kunci kriptografis, bukan password yang bisa ditebak.
Kenapa password lemah berbahaya
Server yang terhubung internet akan selalu menemukan bot yang menabrak port 22 mencoba kombinasi username/password (brute force) — hitungan menit, bukan hari. SSH key menggantinya dengan pasangan kunci kriptografis: kamu pegang *private key* (rahasia, tidak pernah dikirim), server simpan *public key*-nya. Login = server menantang: 'buktikan kamu pegang private key yang cocok' — tanpa password yang bisa ditebak.
Langkah 1 — Generate key (di HOST / PowerShell)
$ssh-keygen -t ed25519 -C "laptop-ke-vm"tekan Enter 3x: lokasi default, passphrase kosong boleh untuk belajar
Hasil: ~/.ssh/id_ed25519 (private — JANGAN dibagikan, pernah pun) dan id_ed25519.pub (public — aman dipasang di server mana pun).
Langkah 2 — Salin public key ke VM
$type $env:USERPROFILE\.ssh\id_ed25519.pub | ssh username@192.168.1.xx "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"cara PowerShell (ssh-copy-id tidak ada di Windows bawaan)
Di Linux/macOS cukup ssh-copy-id username@ip-vm. Hasilnya sama: public key-mu ditambahkan ke ~/.ssh/authorized_keys di VM — 'daftar tamu VIP' yang kalau cocok membuat sshd membuka pintu tanpa password.
$ssh username@192.168.1.xxtes: harus masuk TANPA minta password VM (mungkin minta passphrase kunci jika kamu set)
Langkah 3 — (Opsional, paham risikonya dulu) Matikan login password
$sudo nano /etc/ssh/sshd_configcari & ubah: PasswordAuthentication no
Sektor lain file itu mungkin sudah menyetel via sshd_config.d/*.include — cek juga sudo grep -r PasswordAuthentication /etc/ssh/ dan ubah yang nilainya yes. Setelah edit:
$sudo systemctl restart sshreload konfigurasi sshd (sesi SSH yang sedang aktif tidak putus)
Ingat kebiasaan config-file server: restart service setelah ubah config. Ini pola yang sama persis untuk nginx & service lain nanti.
Opsional: ganti port SSH default
Ubah #Port 22 → Port 2222 di sshd_config, lalu sudo ufw allow 2222/tcp SEBELUM restart, baru sudo systemctl restart ssh, dan koneksimu jadi ssh -p 2222 user@ip. Efeknya kecil (mengurangi noise log dari bot, bukan menambah keamanan nyata — bot pemindai tetap menabrak semua port). Boleh dilewati. Nilainya sebagai latihan urutan aman rule→restart: satu-satunya jebakan di sini adalah lupa allow port baru di firewall sebelum restart sshd.
✓ Tanda berhasil — centang kalau sudah kamu lihat/buktikan sendiri
Tombol “lanjut” terbuka setelah semua tercentang — bukan hukuman, tapi jaring pengaman: pastikan step ini benar-benar beres sebelum menumpuk step berikutnya di atasnya.
Lagi bermasalah?
Sudah copy key tapi masih minta password
Dua penyebab klasik: (1) permission salah — sshd menolak authorized_keys yang bisa diubah orang lain. Di VM: chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys. (2) Baris key rusak/terpotong saat paste (PowerShell type kadang menggabungkan baris) — cek cat ~/.ssh/authorized_keys harus diawali ssh-ed25519 AAAA... satu baris utuh.
Kunci privat laptop hilang / mau ganti laptop
Tidak ada fitur 'reset password' untuk key — cukup hapus barisnya dari authorized_keys VM (lewat konsol VirtualBox), generate ulang di laptop baru, salin lagi. Ini sekaligus contoh kenapa akses konsol fisik/lokal selalu harus tersedia sebagai jalan terakhir.