Nonaktifkan login root via SSH di Linux secara aman. Panduan untuk Ubuntu, Debian, AlmaLinux, Rocky Linux, dan openSUSE, lengkap dengan validasi konfigurasi dan rollback cepat.
Halo, Kawan Belajar! Kalau kamu baru saja menyalakan VPS baru, kemungkinan besar akses pertama yang kamu punya adalah login langsung sebagai root lewat SSH. Memang praktis, tapi kebiasaan ini justru membuka celah keamanan yang tidak perlu. Di panduan ini, kita akan menonaktifkan login root via SSH dan menggantinya dengan cara yang lebih aman: login sebagai user biasa, lalu eskalasi ke root hanya saat benar-benar dibutuhkan.
Panduan ini mencakup semua distro Linux umum yang tersedia di CloudKilat:
| Distro | Versi yang Dicakup |
|---|---|
| AlmaLinux | 8, 9, 10 |
| CentOS Stream | 9, 10 |
| Debian | 12, 13 |
| openSUSE Leap | 15.6, 16.0 |
| Rocky Linux | 8, 9, 10 |
| Ubuntu | 22.04, 24.04, 26.04 |
Login root langsung via SSH adalah target favorit serangan brute force. Alasannya sederhana: nama penggunanya sudah pasti root, jadi penyerang hanya perlu menebak satu hal lagi, yaitu kata sandi. Dengan menonaktifkan akses root langsung, kamu memaksa siapa pun (termasuk penyerang) untuk terlebih dahulu mengetahui nama user yang valid sebelum bisa melakukan apa-apa.
Selain itu, praktik ini mendorong kebiasaan baik: setiap perintah sensitif dilakukan secara sadar lewat sudo, bukan dijalankan begitu saja karena sudah telanjur jadi root.
root, pastikan kamu sudah memiliki user non-root yang dapat menjalankan sudo. Kalau tidak, ada risiko kamu kehilangan akses ke server setelah konfigurasi SSH diterapkan.
Ganti namauser dengan nama user yang kamu inginkan. Jika ini pertama kalinya kamu membuat user non-root dengan akses sudo di Linux, panduan berikut cukup untuk memulai.
adduser namauser
usermod -aG sudo namauser
Perintah adduser di Debian/Ubuntu sudah interaktif: kamu akan diminta mengisi kata sandi dan beberapa informasi tambahan (boleh dikosongkan semua dengan menekan Enter).
useradd namauser
passwd namauser
usermod -aG wheel namauser
useradd namauser
passwd namauser
usermod -aG wheel namauser
wheel mungkin belum secara otomatis memiliki hak sudo. Kalau setelah ditambahkan ke group wheel user masih tidak bisa menggunakan sudo, buka file /etc/sudoers dengan visudo dan pastikan baris %wheel ALL=(ALL:ALL) ALL tidak dikomentari (tidak ada tanda # di depannya).
Setelah user dibuat, buka sesi SSH baru (jangan tutup sesi root yang sedang aktif) dan coba login dengan user baru tersebut, lalu uji sudo:
sudo whoami
Kalau outputnya root, berarti user sudah dikonfigurasi dengan benar dan kamu siap lanjut ke langkah berikutnya.
Sebelum menyentuh file konfigurasi apapun, buat salinan cadangannya terlebih dahulu. Ini satu langkah kecil yang bisa menyelamatkan kamu dari kepanikan kalau ada typo di tengah proses pengeditan:
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
Kalau nanti ada yang salah dan kamu perlu rollback, cukup jalankan:
sudo cp /etc/ssh/sshd_config.bak /etc/ssh/sshd_config
lalu restart service SSH, dan konfigurasi kembali ke kondisi semula.
Buka file konfigurasi SSH daemon dengan editor teks:
sudo nano /etc/ssh/sshd_config
nano secara default. Kamu bisa menggunakan vi sebagai alternatif (tersedia di hampir semua distro), atau install nano terlebih dahulu: sudo apt install nano (Debian/Ubuntu) atau sudo dnf install nano (RHEL-based/openSUSE).
Di dalam file ini, cari baris yang berisi PermitRootLogin. Baris ini mungkin sudah ada (dengan atau tanpa tanda # di depannya), atau belum ada sama sekali.
Pastikan baris tersebut berbunyi persis seperti ini:
PermitRootLogin no
#PermitRootLogin prohibit-password, itu artinya baris tersebut masih dikomentari (tidak aktif). Hapus tanda # di depannya dan ubah nilainya menjadi no.
Kalau baris PermitRootLogin tidak ditemukan sama sekali, tambahkan sendiri di bagian bawah file:
PermitRootLogin no
Simpan file dengan menekan Ctrl+O, lalu Enter, kemudian tutup dengan Ctrl+X.
prohibit-password (atau without-password) hanya melarang login root dengan kata sandi, tapi masih mengizinkan login root dengan SSH key. Untuk keamanan yang lebih ketat, tetap gunakan nilai no agar akses root via SSH diblokir sepenuhnya, termasuk lewat SSH key.
Distro-distro modern biasanya sudah menyertakan baris berikut di bagian atas sshd_config:
Include /etc/ssh/sshd_config.d/*.conf
Artinya, semua file .conf di dalam direktori /etc/ssh/sshd_config.d/ juga dibaca oleh SSH daemon, dan nilainya bisa menimpa pengaturan di file utama. Perhatikan ini kalau kamu menemukan pengaturan yang tidak berfungsi sesuai ekspektasi setelah konfigurasi diubah.
root langsung via SSH ke server ini. Setelah perubahan diterapkan, proses-proses tersebut akan langsung gagal dan perlu diperbarui agar menggunakan user non-root.
Sebelum merestart service, lakukan dua pengecekan berikut.
Pertama, periksa apakah ada kesalahan sintaks di file konfigurasi:
sudo sshd -t
Jika tidak ada output, sintaks valid. Pada beberapa environment (terutama sistem minimal), perintah sshd mungkin tidak ada di PATH sehingga perlu menggunakan path lengkapnya:
sudo /usr/sbin/sshd -t
Kedua, periksa konfigurasi efektif yang benar-benar akan dipakai oleh SSH daemon, termasuk nilai dari semua file yang di-include:
sudo sshd -T | grep permitrootlogin
Outputnya harus menunjukkan:
permitrootlogin no
Kalau outputnya masih menunjukkan nilai lain (misalnya yes atau prohibit-password), berarti ada file konfigurasi lain di sshd_config.d/ yang menimpa pengaturan kamu. Cek direktori tersebut:
grep -r "PermitRootLogin" /etc/ssh/
Temukan file yang bermasalah dan perbaiki nilainya di sana.
Setelah konfigurasi tervalidasi, terapkan perubahan dengan me-restart atau me-reload service SSH.
Reload membaca ulang file konfigurasi tanpa benar-benar menghentikan daemon. Ini lebih aman karena koneksi yang sedang berjalan tidak terganggu sama sekali:
# Untuk AlmaLinux, CentOS Stream, Rocky Linux, openSUSE Leap
sudo systemctl reload sshd
# Untuk Debian dan Ubuntu
sudo systemctl reload ssh
Restart juga valid dan lebih umum digunakan. Perbedaannya hanya pada cara daemon ditangani secara internal; koneksi SSH yang sedang aktif tetap tidak terputus di kedua cara:
# Untuk AlmaLinux, CentOS Stream, Rocky Linux, openSUSE Leap
sudo systemctl restart sshd
# Untuk Debian dan Ubuntu
sudo systemctl restart ssh
Tabel referensi nama service per distro:
| Distro | Nama Service |
|---|---|
| AlmaLinux 8, 9, 10 | sshd |
| CentOS Stream 9, 10 | sshd |
| Rocky Linux 8, 9, 10 | sshd |
| Debian 12, 13 | ssh |
| Ubuntu 22.04, 24.04, 26.04 | ssh |
| openSUSE Leap 15.6, 16.0 | sshd |
Pastikan service SSH berjalan normal setelah perubahan diterapkan:
sudo systemctl status sshd # untuk RHEL-based & openSUSE
sudo systemctl status ssh # untuk Debian & Ubuntu
Outputnya harus menunjukkan status active (running).
Sekarang, uji coba dari terminal atau perangkat lain: coba login sebagai root via SSH ke server kamu.
ssh root@alamat-ip-server
Jika konfigurasi berhasil diterapkan, koneksi akan ditolak. Pesan error yang muncul bisa berbeda-beda tergantung distro dan metode autentikasi yang dikonfigurasi di server; berikut beberapa contoh yang umum dijumpai:
Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
root@alamat-ip-server: Permission denied (publickey,password).
Apapun bentuk pesannya, selama login root ditolak, konfigurasi sudah berjalan dengan benar.
sudo secara langsung, misalnya sudo systemctl restart nginx. Hindari terlalu sering masuk ke sesi root penuh menggunakan sudo su - kecuali memang diperlukan. Dengan cara ini, aktivitas administratif tetap tercatat dengan jelas di log sistem dan risiko menjalankan perintah yang tidak disengaja sebagai root juga jadi lebih kecil.
Kalau setelah perubahan diterapkan ternyata ada kendala dan kamu masih memiliki akses ke server (misalnya lewat Console/VNC di panel CloudKilat), konfigurasi SSH bisa dikembalikan seperti semula dengan cepat menggunakan salah satu cara berikut.
Opsi 1: Kembalikan file backup
sudo cp /etc/ssh/sshd_config.bak /etc/ssh/sshd_config
sudo systemctl restart sshd # atau ssh, tergantung distro
Cara ini akan memulihkan konfigurasi SSH ke kondisi sebelum diedit.
Opsi 2: Ubah konfigurasi secara manual
Buka kembali file /etc/ssh/sshd_config, lalu cari baris berikut:
PermitRootLogin no
Ubah nilainya menjadi:
PermitRootLogin yes
Simpan perubahan, lalu restart service SSH. Setelah akses kembali normal, periksa ulang konfigurasi sebelumnya sebelum mencoba menerapkan perubahan lagi.
Kalau login root masih berhasil meski PermitRootLogin no sudah diterapkan, biasanya ada file konfigurasi lain yang menimpa pengaturan tersebut. Pada distro modern, SSH sering membaca file tambahan dari direktori /etc/ssh/sshd_config.d/.
Untuk mengecek semua konfigurasi terkait PermitRootLogin, jalankan:
grep -r "PermitRootLogin" /etc/ssh/
Kalau ada file lain yang berisi PermitRootLogin yes, ubah nilainya menjadi no, lalu reload atau restart service SSH.
Setelah itu, pastikan konfigurasi efektif yang benar-benar digunakan oleh SSH daemon sudah sesuai:
sudo sshd -T | grep permitrootlogin
Output yang benar seharusnya:
permitrootlogin no
Masalah ini biasanya disebabkan oleh typo atau kesalahan sintaks di file konfigurasi SSH.
Periksa konfigurasi dengan:
sudo sshd -t
Pada beberapa sistem minimal, kamu mungkin perlu menggunakan path lengkap:
sudo /usr/sbin/sshd -t
Kalau ada kesalahan, SSH akan menampilkan baris konfigurasi yang bermasalah. Perbaiki file tersebut, lalu coba restart kembali service SSH.
sudo tidak berfungsiAda beberapa hal yang perlu diperiksa.
1. User belum masuk ke group yang benar
Cek group yang dimiliki user:
groups namauser
Pastikan output menyertakan:
sudo untuk Debian/Ubuntuwheel untuk RHEL-based dan openSUSEKalau belum ada, tambahkan dengan:
usermod -aG sudo namauser # Debian/Ubuntu
usermod -aG wheel namauser # RHEL-based, openSUSE
2. Session login belum diperbarui
Perubahan group biasanya baru berlaku setelah login ulang. Logout dari SSH, lalu login kembali sebelum mencoba sudo lagi.
3. Package sudo belum tersedia
Beberapa image minimal Linux memang tidak menyertakan sudo secara default. Install terlebih dahulu dari sesi root yang masih aktif:
apt install sudo # Debian/Ubuntu
dnf install sudo # RHEL-based, openSUSE
Kalau semua sesi SSH sudah terlanjur ditutup sebelum user non-root berhasil diverifikasi, kamu masih bisa mengakses server melalui fitur Console/VNC di panel CloudKilat.
Dari sana, lakukan rollback konfigurasi menggunakan langkah-langkah pada bagian Rollback Cepat, lalu periksa kembali konfigurasi SSH sebelum mencoba menerapkannya ulang.
Menonaktifkan login root via SSH adalah salah satu langkah hardening dasar yang sangat direkomendasikan di setiap VPS baru. Prosesnya pun relatif sederhana: buat user non-root dengan akses sudo, ubah konfigurasi PermitRootLogin, lalu validasi dan terapkan perubahan pada service SSH.
Walau demikian, Kawan Belajar, langkah ini bukan perlindungan penuh terhadap semua ancaman SSH. Selama autentikasi kata sandi masih aktif, serangan brute force terhadap user biasa tetap mungkin terjadi. Maka, praktik terbaik berikutnya adalah menggunakan autentikasi SSH key dan menonaktifkan PasswordAuthentication agar akses SSH hanya bisa dilakukan menggunakan key yang valid.
Setelah itu, kamu juga bisa melanjutkan hardening server dengan mengonfigurasi firewall untuk membatasi akses ke port yang memang dibutuhkan saja. Dengan beberapa langkah sederhana ini, keamanan dasar VPS kamu sudah akan jauh lebih baik dibanding konfigurasi default awalnya. Selamat mencoba!
Jangan ragu untuk menghubungi tim support kami jika Anda memiliki pertanyaan atau masalah terkait layanan CloudKilat.