Cara Menggunakan SSH untuk Remote Server

Muhamad Adin ArifinRabu, 24 Mei 2023 | 23:25 WIB
Cara Menggunakan SSH untuk Remote Server
Cara Menggunakan SSH untuk Remote Server

SSH (Secure Shell) digunakan untuk mengakses server jarak jauh secara aman melalui terminal. Perintah dasar untuk terhubung adalah ssh username@alamat_ip_server, namun untuk keamanan dan efisiensi maksimal, praktisi wajib menggunakan autentikasi berbasis SSH Key dan mengonfigurasi file ~/.ssh/config.

Mengapa Autentikasi SSH Key Wajib Menggantikan Password?

Mengandalkan password untuk akses root atau user sudo adalah celah keamanan fatal. Password rentan terhadap serangan brute-force, dictionary attack, hingga keylogging di mesin lokal.

SSH Key menggunakan kriptografi asimetris yang membagi akses menjadi public key dan private key. Server hanya menyimpan public key, sementara Anda memegang private key yang tidak pernah dikirim melalui jaringan.

Pendekatan ini mengubah paradigma keamanan dari “membuktikan Anda tahu kata sandi” menjadi “membuktikan Anda memiliki kunci fisik”. Bahkan jika jaringan disadap, private key tidak akan terekspos.

Bagaimana Cara Generate dan Distribusi SSH Key yang Benar?

Banyak tutorial usang masih menyarankan pembuatan kunci RSA 2048-bit. Untuk standar keamanan modern, gunakan algoritma Ed25519 yang lebih cepat, lebih pendek, dan tahan terhadap kelemahan kriptografis tertentu.

Buka terminal lokal Anda dan jalankan perintah berikut:

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

Tekan Enter untuk menyimpan di lokasi default (~/.ssh/id_ed25519). Sangat disarankan untuk menambahkan passphrase sebagai lapisan keamanan ganda jika private key Anda dicuri.

Selanjutnya, salin public key ke server target menggunakan utilitas bawaan:

ssh-copy-id username@alamat_ip_server

Jebakan Fatal Izin Direktori (Permissions)

Jika Anda menyalin public key secara manual dan SSH tetap menolak koneksi, 99% masalahnya ada pada izin folder. Server SSH akan menolak autentikasi key jika folder .ssh atau file authorized_keys terlalu permisif.

Pastikan Anda menjalankan perintah berikut di dalam server:

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

Bagaimana Cara Mengonfigurasi SSH Config agar Tidak Hafal IP?

Menghafal alamat IP, port, dan nama user untuk puluhan server adalah pemborosan waktu dan rentan terhadap typo. Praktisi senior menggunakan file konfigurasi klien SSH (~/.ssh/config) untuk membuat alias atau shortcut.

Buat atau edit file konfigurasi di mesin lokal Anda:

nano ~/.ssh/config

Tambahkan blok konfigurasi berikut untuk setiap server yang Anda kelola:

Host production
 HostName 192.168.1.100
 User deployer
 Port 2222
 IdentityFile ~/.ssh/id_ed25519
Host staging
 HostName 10.0.0.50
 User admin
 IdentityFile ~/.ssh/staging_key

Setelah disimpan, Anda tidak perlu lagi mengetik ssh [email protected] -p 2222. Cukup ketik ssh production, dan klien SSH akan secara otomatis menerjemahkannya ke parameter yang tepat.

Parameter Penting dalam SSH Config

Parameter Fungsi Contoh Penggunaan
Host Nama alias untuk perintah SSH. Host web-server-1
HostName Alamat IP atau domain asli server. HostName 203.0.113.10
User Username default untuk login. User ubuntu
Port Port SSH jika tidak menggunakan 22. Port 2222
IdentityFile Path spesifik ke private key. IdentityFile ~/.ssh/prod_key
ServerAliveInterval Mencegah koneksi putus (timeout). ServerAliveInterval 60

Kapan Waktu Tepat Mengubah Konfigurasi sshd_config Server?

Konfigurasi daemon SSH (sshd_config) harus diubah segera setelah server baru di-provisioning, sebelum aplikasi apa pun dideploy. Konfigurasi default OpenSSH mengizinkan login root dengan password, yang merupakan undangan terbuka bagi bot peretas.

Masuk ke server dan edit file konfigurasi daemon:

sudo nano /etc/ssh/sshd_config

Terapkan hardening dasar dengan mengubah atau menambahkan baris berikut:

Port 2222 # Ubah dari 22 untuk mengurangi noise log scanner
PermitRootLogin no # Wajibkan login user biasa, lalu sudo
PasswordAuthentication no # Paksa penggunaan SSH Key saja
PubkeyAuthentication yes # Pastikan autentikasi key aktif

Aturan Terminal Cadangan

Jangan pernah menutup terminal Anda setelah menjalankan sudo systemctl restart sshd. Selalu buka terminal kedua yang masih terhubung (logged in) sebelum me-restart service.

Jika Anda salah ketik konfigurasi (misalnya menonaktifkan PubkeyAuthentication sebelum key terpasang), Anda akan terkunci permanen dari server dan harus melakukan recovery via konsol cloud provider.

Penyebab Utama Error SSH dan Cara Debugging-nya

Ketika koneksi SSH gagal, pesan error bawaan seringkali terlalu umum. Memahami akar masalah memerlukan pendekatan debugging yang sistematis.

Gunakan flag verbose (-v) untuk melihat di mana tepatnya proses negosiasi koneksi gagal. Flag -v memberikan detail dasar, -vv lebih detail, dan -vvv memberikan jejak debug kriptografi penuh.

ssh -vvv production

Matriks Troubleshooting Error SSH

Pesan Error Penyebab Umum Solusi Praktis
Connection timed out Firewall memblokir port, atau IP salah. Cek Security Group (AWS/GCP) atau ufw. Pastikan port SSH terbuka untuk IP Anda.
Connection refused Service SSH tidak berjalan, atau port salah. Pastikan Anda menggunakan port yang benar. Cek status service via konsol cloud.
Permission denied (publickey) Server tidak mengenali key, atau izin file salah. Cek izin folder .ssh (700) dan file key (600). Pastikan pubkey ada di authorized_keys.
WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! IP server digunakan ulang, atau ada serangan MITM. Hapus key lama di lokal dengan ssh-keygen -R alamat_ip_server, lalu sambungkan ulang.

Memahami alur negosiasi SSH—mulai dari pertukaran versi, pertukaran kunci algoritma, hingga autentikasi user—akan mengubah cara Anda mendiagnosis masalah dari sekadar menebak menjadi analisis berbasis data log.