Panduan Lengkap Setup SSH di Linux Server dari Nol
Daftar Isi (Klik untuk melihat)
- Langkah 1: Install Paket OpenSSH Server
- Langkah 2: Buka Firewall untuk SSH
- Langkah 3: Buat User Non-Root dengan Hak Sudo
- Langkah 4: Setup SSH Key Authentication
- Langkah 5: Hardening sshd_config
- Tabel Perbandingan Jenis SSH Key
- Menyambungkan dari Berbagai OS
- Troubleshooting: SSH Nggak Mau Connect?
- Tanya Jawab Seputar SSH
SSH atau Secure Shell itu ibarat pintu gerbang utama buat ngurus server Linux kamu dari jauh. Tanpa SSH, kamu bakal repot banget harus duduk di depan server fisik setiap kali mau ngutak-ngatik sesuatu. Protokol ini bikin semua komunikasi antara komputer lokal dan server jadi terenkripsi, jadi nggak perlu khawatir data ketangkep orang lain di tengah jalan.
Kalau kamu baru pertama kali nyentuh dunia server, tenang aja. Panduan ini aku tulis se-detail mungkin supaya kamu bisa ngikutin langkah demi langkah tanpa bingung. Baik kamu pakai Ubuntu, Debian, CentOS, Rocky Linux, AlmaLinux, maupun Fedora, semuanya bakal aku cover.
Kenapa sih SSH ini penting banget? Karena hampir semua aktivitas admin server berputar di sekitar SSH. Mulai dari deploy aplikasi, transfer file pakai SFTP, push kode lewat Git, sampai troubleshooting masalah yang bikin pusing. Tanpa SSH, server Linux kamu kayak rumah tanpa pintu depan — nggak bisa dimasuki secara remote.
Langkah 1: Install Paket OpenSSH Server
Hal pertama yang harus dilakukan adalah menginstall OpenSSH Server di mesin Linux kamu. Paket ini yang bakal jadi "juru bicara" server kamu menerima koneksi SSH dari luar. Perintahnya sedikit beda tergantung distro yang kamu pakai.
Untuk Debian/Ubuntu:
sudo apt update && sudo apt install -y openssh-serverUntuk CentOS/Rocky/AlmaLinux/Fedora:
sudo dnf install -y openssh-serverSetelah install, aktifkan dan jalankan layanan sshd supaya langsung nyala dan otomatis jalan tiap kali server boot:
sudo systemctl enable --now sshdBuat ngecek apakah SSH udah beneran jalan dan lagi dengerin di port 22, coba deh jalankan perintah ini:
sudo ss -tlnp | grep :22Kalau keluar output yang nunjukin port 22 lagi aktif, berarti kamu udah selangkah lebih maju. Nice!
Langkah 2: Buka Firewall untuk SSH
Server kamu mungkin udah dipasangi firewall, dan secara default port SSH (port 22) bisa jadi masih keblokir. Jangan sampai udah install SSH tapi nggak bisa konek gara-gara lupa buka firewall, ya. Ini kesalahan klasik yang sering banget terjadi.
Kalau pakai UFW (Ubuntu/Debian):
sudo ufw allow OpenSSH
sudo ufw reloadKalau pakai firewalld (CentOS/Rocky/Fedora):
sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --reloadOh iya, kalau kamu pakai layanan cloud kayak AWS, GCP, atau Azure, ada tambahan layer keamanan lagi nih namanya Security Group atau Network Rules. Pastikan kamu juga membuka port SSH di dashboard cloud provider kamu, nggak cuma di firewall OS-nya aja.
Jujur saja, menurut aku sangat disarankan untuk hanya mengizinkan SSH dari IP tertentu aja kalau memungkinkan. Buka SSH ke seluruh dunia (0.0.0.0/0) itu kayak ninggalin pintu rumah kebuka pas lagi pergi — technically bisa, tapi riskan banget.
Langkah 3: Buat User Non-Root dengan Hak Sudo
Ini penting banget. Jangan pernah mengelola server pakai akun root langsung lewat SSH. Kalau akun root kamu kebobolan, ya udah bye-bye server. Lebih baik bikin user baru yang punya hak sudo.
# Buat user baru (ganti 'namakamu' sesuai keinginan)
sudo adduser namakamu
# Tambahkan user ke grup sudo
sudo usermod -aG sudo namakamuBuat verifikasi, coba login pakai user baru lewat SSH (masih pakai password di tahap ini):
ssh namakamu@IP_SERVER_KAMUBisa masuk? Mantap. Sekarang lanjut ke bagian yang paling seru.
Langkah 4: Setup SSH Key Authentication
Di sinilah keamanan SSH naik level drastis. Otentikasi berbasis kunci (key-based authentication) jauh lebih aman dibanding password biasa. Kenapa? Karena password bisa ditebak atau di-brute-force, tapi private key yang di-generate secara kriptografis? Mustahil ditembus dengan cara konvensional.
Generate key pair di komputer lokal kamu:
ssh-keygen -t ed25519 -C "email@kamu.com"Kenapa Ed25519? Karena algoritma ini lebih cepat dan lebih aman dibanding RSA, plus ukuran kuncinya lebih kecil. Tapi kalau server kamu masih pakai sistem lama yang belum support Ed25519, pakai alternatif ini:
ssh-keygen -t rsa -b 4096 -C "email@kamu.com"Nanti kamu bakal ditanya mau simpan di mana (tekan Enter aja untuk default ~/.ssh/) dan diminta masukkan passphrase. Aku saranin banget isi passphrase-nya — ini lapisan keamanan tambahan kalau misalnya file private key kamu ketahuan orang.
Salin kunci publik ke server:
ssh-copy-id namakamu@IP_SERVER_KAMUKalau perintah ssh-copy-id nggak tersedia (misalnya di Windows), kamu bisa copy manual:
# Di komputer lokal, tampilkan kunci publik
cat ~/.ssh/id_ed25519.pub
# Lalu paste isi kuncinya ke file ini di server:
nano ~/.ssh/authorized_keysUji login pakai kunci:
ssh namakamu@IP_SERVER_KAMUKalau langsung masuk tanpa minta password (atau cuma minta passphrase), berarti setup key authentication kamu berhasil. Selamat!
Ada satu hal yang perlu diingat soal izin file. Permission yang salah bisa bikin SSH nolak koneksi kamu, meskipun kuncinya udah benar. Pastikan seperti ini:
~/.ssh→ permission 700 (hanya owner yang bisa baca/tulis/eksekusi)~/.ssh/authorized_keys→ permission 600 (hanya owner yang bisa baca/tulis)
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keysLangkah 5: Hardening sshd_config
Sekarang waktunya memperkuat pertahanan SSH di sisi server. Edit file konfigurasi sshd dengan hati-hati. Dan satu tips penting: selalu pertahankan sesi SSH yang sedang aktif terbuka saat menguji perubahan. Jangan sampai kamu terkunci dari server sendiri gara-gara salah edit config.
sudo nano /etc/ssh/sshd_configBerikut beberapa pengaturan yang recommended untuk diterapkan:
# Nonaktifkan login root
PermitRootLogin no
# Nonaktifkan login password (hanya izinkan key)
PasswordAuthentication no
# Batasi user yang boleh SSH
AllowUsers namakamu
# Ganti port default (opsional tapi recommended)
Port 2222
# Nonaktifkan X11 forwarding jika nggak dipakai
X11Forwarding no
# Batasi waktu autentikasi
LoginGraceTime 30
MaxAuthTries 3Setelah selesai edit, restart layanan sshd:
sudo systemctl restart sshdKalau kamu ganti port jadi 2222 (atau port lain), jangan lupa update juga aturan firewall dan saat connect pakai flag -p:
ssh namakamu@IP_SERVER_KAMU -p 2222Banyak gamer yang mungkin nggak relate sama ini, tapi buat yang pernah ngurusin game server pribadi, pasti tau betapa pentingnya mengganti port default. Bot scanner otomatis biasanya cuma nyari port 22 — kalau kamu ganti port, tingkat "gangguan" dari scanner ini bisa turun drastis.
Oh, satu lagi. Jangan lupa kalau platform cloud juga perlu diupdate Security Group-nya kalau kamu ganti port. Aku pernah bingung sendiri kenapa SSH nggak bisa konek, ternyata lupa update rules di cloud dashboard. Malu-maluin, tapi ya jadi pelajaran.
Tabel Perbandingan Jenis SSH Key
| Parameter | Ed25519 | RSA 4096 |
|---|---|---|
| Keamanan | Sangat tinggi | Tinggi |
| Kecepatan | Lebih cepat | Cukup lambat |
| Ukuran Kunci | Kecil (256-bit) | Besar (4096-bit) |
| Kompatibilitas | Sistem modern | Semua sistem |
| Rekomendasi | ✅ Utama | Alternatif untuk sistem lama |
Menyambungkan dari Berbagai OS
Berita bagusnya, kamu nggak perlu install software apapun kalau pakai Linux atau macOS — SSH client udah built-in. Tinggal buka terminal dan langsung connect.
Untuk pengguna Windows 10/11, kamu bisa pakai PowerShell karena udah ada OpenSSH client bawaan. Atau kalau lebih suka GUI, PuTTY tetap jadi pilihan solid.
Kalau pakai PuTTY, langkahnya sedikit berbeda:
Buka PuTTYgen untuk mengimpor OpenSSH key dan convert ke format .ppk
Isi kolom Host Name dan Port
Masuk ke menu Connection > SSH > Auth
Browse file .ppk yang tadi kamu buat
Klik Open untuk mulai sesi
Troubleshooting: SSH Nggak Mau Connect?
Kalau SSH kamu tiba-tiba nggak bisa connect setelah semua konfigurasi, jangan panik dulu. Ini beberapa hal yang perlu dicek:
Pastikan kunci yang digunakan benar — cek dengan
ssh -vT namakamu@IP_SERVER_KAMUuntuk debug verboseIzin file harus tepat — ~/.ssh harus 700, authorized_keys harus 600
Public key harus match dengan private key di komputer lokal
Cek log server di
/var/log/auth.log(Debian/Ubuntu) atau/var/log/secure(CentOS/RHEL)Konfirmasi bahwa
PubkeyAuthentication yesada di sshd_config
Kalau kamu sampai terkunci dari server, gunakan konsol penyedia cloud (VNC atau serial console) untuk mengembalikan perubahan sshd_config. Ini penyelamat banget situasi emergency.
Tanya Jawab Seputar SSH
Q: Boleh nggak sih tetap pakai port 22 default?
Boleh aja sebenernya, terutama kalau kamu udah setup otentikasi kunci dan menonaktifkan password login. Tapi kalau kamu mau mengurangi "noise" dari bot scanner yang mondar-mandir, ganti ke port lain bisa sangat membantu. Ingat, ini bukan solusi keamanan utama — cuma lapisan tambahan aja.
Q: Ed25519 atau RSA, sebaiknya pakai yang mana?
Kalau server dan client kamu berdua support Ed25519, pakai Ed25519 aja. Lebih cepat, lebih aman, ukuran kunci lebih kecil. RSA 4096 tetap jadi pilihan valid kalau kamu berurusan dengan sistem lama yang belum support Ed25519.
Q: Gimana cara cek apakah SSH key authentication aku udah jalan dengan benar?
Coba login dari komputer lokal. Kalau nggak diminta password (atau cuma diminta passphrase dari key), berarti udah benar. Kamu juga bisa cek verbose output dengan ssh -vT user@server. Dari situ kelihatan kunci mana yang dicoba dan apakah berhasil authenticate.
Q: Aku ganti port SSH tapi malah nggak bisa connect. Kenapa?
Hampir pasti karena firewall atau Security Group belum diupdate. Pastikan port baru kamu sudah di-allow di firewall OS (UFW/firewalld) DAN di Security Group kalau pakai cloud. Saat connect, jangan lupa tambahin flag -p nomorport.
Q: Apakah aman menonaktifkan PasswordAuthentication sepenuhnya?
Sangat aman, malah sangat disarankan — asalkan kamu sudah yakin key-based authentication berjalan lancar. Sebelum menonaktifkan, pastikan kamu masih punya sesi SSH aktif yang terbuka sebagai cadangan kalau ada masalah.
Setup SSH memang keliatan ribet di awal, tapi begitu kamu udah paham alurnya, ini jadi hal paling basic yang wajib dikuasai siapapun yang mau serius ngurusin server. Sekali jalan, server kamu bakal jauh lebih aman dan kamu bisa manage dari mana aja tanpa rasa was-was.