Pertama kali punya VPS, hal pertama yang harus dikuasai adalah SSH. Tanpa SSH, kamu nggak bisa ngapa-ngapain di server. Ini panduan praktisnya dari nol.

Apa Itu SSH?

SSH (Secure Shell) adalah protokol untuk remote login ke server secara terenkripsi. Semua command yang kamu ketik di terminal lokal, dikirim secara aman ke server dan dieksekusi di sana.

Defaultnya jalan di port 22.


1. Connect ke VPS

Waktu beli VPS, provider biasanya kasih:

  • IP address server
  • Username (biasanya root)
  • Password atau file .pem

Pakai Password

ssh root@123.456.789.0

Masukkan password, done. Tapi ini cara yang kurang aman — sebaiknya segera ganti ke key-based auth.

Pakai Private Key (.pem)

ssh -i ~/.ssh/my-key.pem root@123.456.789.0

Kalau error “Permission denied”, fix permission filenya dulu:

chmod 400 ~/.ssh/my-key.pem

2. Setup SSH Key Authentication

Ini cara yang lebih aman dan lebih praktis — login tanpa password.

Generate Key Pair

Di mesin lokal kamu:

ssh-keygen -t ed25519 -C "haimi@vps"

Tekan Enter semua sampai selesai. Hasilnya:

  • ~/.ssh/id_ed25519 → private key (jangan dikasih ke siapapun)
  • ~/.ssh/id_ed25519.pub → public key (ini yang dikopiin ke server)

Copy Public Key ke Server

ssh-copy-id -i ~/.ssh/id_ed25519.pub root@123.456.789.0

Atau manual:

cat ~/.ssh/id_ed25519.pub | ssh root@123.456.789.0 "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

Sekarang coba login lagi — harusnya langsung masuk tanpa password.


3. Buat User Baru (Jangan Pakai Root)

Login terus pakai root itu bad practice. Bikin user baru:

adduser haimi
usermod -aG sudo haimi

Copy authorized_keys ke user baru:

rsync --archive --chown=haimi:haimi ~/.ssh /home/haimi

Sekarang login pakai user baru:

ssh haimi@123.456.789.0

4. Hardening SSH

Edit config SSH di server:

sudo nano /etc/ssh/sshd_config

Ubah/tambahkan baris ini:

# Ganti port default (opsional tapi direkomendasikan)
Port 2222

# Matikan login root via SSH
PermitRootLogin no

# Matikan password auth, wajib pakai key
PasswordAuthentication no

# Batasi user yang boleh SSH
AllowUsers haimi

Restart SSH service:

sudo systemctl restart sshd

Penting: Jangan tutup session yang ada sampai kamu verifikasi bisa login dengan config baru. Kalau salah config dan keluar, bisa-bisa lockout sendiri.


5. SSH Config Biar Praktis

Daripada ngetik IP panjang tiap kali, bikin shortcut di ~/.ssh/config:

Host myvps
    HostName 123.456.789.0
    User haimi
    Port 2222
    IdentityFile ~/.ssh/id_ed25519

Sekarang cukup:

ssh myvps

Bisa juga untuk multiple VPS:

Host staging
    HostName 111.222.333.444
    User deploy
    Port 22

Host production
    HostName 555.666.777.888
    User deploy
    Port 2222

Cheatsheet

Command Fungsi
ssh user@ip Connect ke server
ssh -p 2222 user@ip Connect ke port custom
ssh -i key.pem user@ip Connect pakai private key
ssh-keygen -t ed25519 Generate key pair
ssh-copy-id user@ip Copy public key ke server
scp file.txt user@ip:~/ Upload file via SSH
ssh -L 8080:localhost:3000 user@ip Port forwarding

Itu dasarnya. Dengan key-based auth + disable password login + non-root user, VPS kamu udah jauh lebih aman dari sebagian besar server di luar sana.