© 2026 Basis Pengetahuan Cloudkilat. Hak Cipta Dilindungi.

|
>
>
  1. Beranda
  2. Kilat VPS
  3. Akses Kilat VPS
  4. SSH
  5. Cara Mengganti Port SSH Default di Linux: Ubuntu, Debian, dan AlmaLinux

Cara Mengganti Port SSH Default di Linux: Ubuntu, Debian, dan AlmaLinux

Panduan lengkap ganti port SSH di Ubuntu, Debian, AlmaLinux, dan Rocky Linux. Termasuk konfigurasi UFW, firewalld, SELinux, dan socket activation Ubuntu 22.10+.

Waktu baca: 13 menit • Lihat progres baca di bar atas
Oleh Nizen Iskandar
Dipublikasikan 12 Mei 2026
SSHLinux TutorialUbuntu ServerKeamanan VPSFirewallAlmaLinux

cara ganti port ssh linux cover

Halo, Kawan Belajar! Kalau kamu punya VPS yang baru saja dibeli, ada satu langkah keamanan sederhana yang sering dilewatkan: mengganti port SSH dari default-nya, yaitu port 22. Port ini sudah terlalu terkenal di kalangan bot scanner otomatis yang gentayangan di internet setiap hari. Dengan mengganti ke port yang berbeda, kamu langsung mencegah sebagian besar upaya brute force yang menyerang servermu.

Panduan ini mencakup tiga skenario utama: Ubuntu/Debian lawas yang pakai cara klasik, Ubuntu 22.10 ke atas yang sudah pakai systemd socket activation (banyak yang bingung soal ini!), dan CentOS/AlmaLinux/Rocky Linux yang perlu konfigurasi tambahan karena SELinux aktif.


Kenapa Sebaiknya Ganti Port SSH?

Port 22 adalah port SSH yang sudah distandardisasi sejak 1995. Artinya, semua bot dan script kiddie di luar sana sudah otomatis men-scan port ini ke miliaran IP setiap hari. Dengan mengganti ke port lain, kamu tidak hanya membuat server lebih aman, tapi kamu langsung mengurangi kebisingan di log akibat percobaan brute force yang tiada henti.

Bukan berarti rumahmu tidak bisa ditembus, tapi minimal tamu tak diundang perlu usaha lebih keras.

⚠️ Baca Ini Sebelum Mulai
Ganti port SSH bisa membuatmu terkunci keluar dari server jika tidak dilakukan dengan urutan yang benar. Panduan ini punya urutan yang sengaja disusun agar: buka port di firewall dulu, baru restart SSH. Jangan dibalik. Dan jangan tutup sesi SSH yang sedang aktif sampai kamu berhasil masuk lewat port baru dari terminal lain.

Persiapan Sebelum Mulai

Sebelum menyentuh konfigurasi apapun, lakukan dua hal ini:

1. Backup file konfigurasi SSH

sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak

2. Pilih nomor port yang tepat

Hindari port di bawah 1024 (sudah "diprioritaskan" untuk layanan sistem lain). Port di kisaran 1025 hingga 65535 bebas dipakai, tapi hindari port yang umum dikenal seperti 3306 (MySQL), 8080 (HTTP alt), atau 5432 (PostgreSQL). Port seperti 2222, 2200, atau 33022 adalah pilihan yang populer.

ℹ️ Kenali Distro Kamu Dulu
Cara mengganti port SSH berbeda tergantung distro dan versinya. Ubuntu 22.10 ke atas punya mekanisme berbeda dibanding versi sebelumnya. Cek versi Ubuntu kamu dengan lsb_release -a, atau untuk distro RHEL-based pakai cat /etc/os-release.

Pilih cara yang sesuai dengan distromu di bawah ini.

Cara 1: Ubuntu 20.04 / 22.04 dan Debian

Cara ini berlaku untuk Ubuntu yang menggunakan ssh.service secara tradisional, yaitu Ubuntu 20.04 (Focal), 22.04 (Jammy), serta semua versi Debian (Buster, Bullseye, Bookworm, dst).

Langkah 1: Edit file konfigurasi SSH

Buka file konfigurasi SSH dengan editor teks:

sudo nano /etc/ssh/sshd_config

Cari baris yang berbunyi #Port 22. Baris ini biasanya di bagian atas file. Hapus tanda # di depannya, lalu ganti angka 22 dengan port pilihanmu. Contoh menggunakan port 2222:

Port 2222

Simpan dan keluar (di nano: Ctrl+X, lalu Y, lalu Enter).

Langkah 2: Cek sintaks konfigurasi

Sebelum restart apapun, validasi dulu konfigurasi kamu:

sudo sshd -t

Kalau tidak ada output, berarti tidak ada error. Kalau ada pesan error, kembali ke file konfigurasi dan perbaiki.

Langkah 3: Buka port baru di UFW

🚨 Lakukan Langkah Ini Sebelum Restart SSH
Buka port baru di firewall sebelum restart SSH. Kalau dibalik, kamu akan terkunci keluar karena SSH sudah pindah port tapi firewall belum membuka akses ke port itu.
sudo ufw allow 2222/tcp

Verifikasi rules-nya sudah masuk:

sudo ufw status

Output UFW setelah menambahkan port SSH baru

Gambar 1: Pastikan port baru sudah muncul di daftar rules UFW sebelum melanjutkan.

Langkah 4: Restart SSH

sudo systemctl restart ssh

Langkah 5: Test dari terminal baru

Jangan tutup sesi SSH yang sedang aktif! Buka terminal baru, lalu coba koneksi ke port baru:

ssh -p 2222 user@ip-server-kamu

Kalau berhasil masuk, lanjutkan ke langkah berikutnya. Kalau gagal, gunakan sesi lama untuk troubleshoot.

Langkah 6: Tutup akses port 22 (opsional)

Setelah kamu yakin port baru berfungsi, cabut akses ke port 22:

sudo ufw delete allow ssh
# atau
sudo ufw delete allow 22/tcp

Cara 2: Ubuntu 22.10, 24.04, dan 26.04 (Socket Activation)

Mulai Ubuntu 22.10 (Kinetic), Ubuntu mengubah cara SSH bekerja: alih-alih langsung menjalankan sshd terus-menerus, systemd menggunakan mekanisme bernama socket activation. Artinya, ssh.socket yang "menunggu" koneksi masuk, dan baru membangunkan ssh.service saat ada yang menghubungi.

Dampaknya: mengedit Port di /etc/ssh/sshd_config saja tidak cukup untuk mengubah port. Kamu juga harus memberi tahu ssh.socket tentang perubahan ini. Banyak yang bingung kenapa port tidak berubah padahal sudah edit config, ini penyebabnya.

ℹ️ Cek Apakah Kamu Pakai Socket Activation
Jalankan perintah ini: systemctl is-active ssh.socket
Kalau outputnya active, kamu masuk kategori ini. Kalau inactive atau not-found, gunakan Cara 1.

Langkah 1: Edit sshd_config

Buka file konfigurasi SSH dan tambahkan atau ubah baris port seperti biasa:

sudo nano /etc/ssh/sshd_config

Cari #Port 22, uncomment dan ubah:

Port 2222

Simpan dan keluar.

Lalu lakukan validasi konfigurasi:

sudo sshd -t

Jika tidak ada output, berarti konfigurasi valid.

Langkah 2: Buat override untuk ssh.socket

Di sinilah bedanya. Kamu perlu membuat file override systemd yang memberitahu ssh.socket untuk mendengarkan di port baru.

Buat direktori override:

sudo mkdir -p /etc/systemd/system/ssh.socket.d

Lalu buat file konfigurasi:

sudo nano /etc/systemd/system/ssh.socket.d/listen.conf

Isi file tersebut dengan:

[Socket]
ListenStream=
ListenStream=0.0.0.0:2222
ListenStream=[::]:2222

Baris ListenStream= yang kosong itu sengaja dikosongkan untuk membersihkan nilai default (port 22).

Kemudian:

  • 0.0.0.0:2222 → listen IPv4
  • [::]:2222 → listen IPv6

Tanpa baris kosong tersebut, SSH akan mendengarkan di dua port sekaligus (22 dan 2222).

File override systemd ssh.socket.d/listen.conf

Gambar 2: File override yang benar harus punya satu baris ListenStream kosong untuk reset, lalu ListenStream baru untuk port custom.

Langkah 3: Reload systemd

sudo systemctl daemon-reload

Langkah 4: Nonaktifkan ssh.service klasik

ssh.socket dan ssh.service tidak bisa berjalan bersamaan. Jika ssh.service masih aktif, biasanya akan muncul error seperti:

ssh.socket: Socket service ssh.service already active, refusing.

Stop dan disable service klasik terlebih dahulu:

sudo systemctl stop ssh.service
sudo systemctl disable ssh.service

Langkah 5: Restart dan enable ssh.socket

Restart socket SSH:

sudo systemctl restart ssh.socket

Lalu enable agar otomatis aktif setelah reboot:

sudo systemctl enable ssh.socket

Langkah 6: Buka port baru di firewall

Jika menggunakan UFW:

sudo ufw allow 2222/tcp

Jika menggunakan firewall provider/cloud security group, pastikan port 2222/TCP juga sudah dibuka.

Langkah 7: Verifikasi

Cek apakah SSH sekarang sudah mendengarkan di port yang benar:

sudo ss -tlnp | grep 2222

Outputnya harus menunjukkan port 2222, misalnya:

LISTEN 0 4096 0.0.0.0:2222
LISTEN 0 4096    [::]:2222

Perhatikan bahwa proses yang listen adalah systemd, bukan sshd. Ini normal pada mode socket activation.

Langkah 8: Test dari terminal baru

Jangan logout session aktif terlebih dahulu.

Buka terminal baru dan test koneksi:

ssh -p 2222 user@ip-server-kamu

Jika berhasil login, berarti konfigurasi sudah berjalan normal.

Langkah 9: Pastikan port 22 sudah tidak aktif

Cek:

sudo ss -tlnp | grep :22

Jika tidak ada output, berarti SSH sudah tidak lagi mendengarkan di port 22.

Langkah 10: Hapus rule firewall port lama (opsional)

Jika sebelumnya membuka port SSH default:

sudo ufw delete allow ssh

atau:

sudo ufw delete allow 22/tcp
🔧 Kembali ke Mode Tradisional (Opsional)
Kalau kamu lebih nyaman dengan cara klasik (SSH langsung berjalan tanpa socket activation), kamu bisa disable socket dan enable service tradisional:

sudo systemctl disable --now ssh.socket
sudo systemctl enable --now ssh.service

Setelah ini, cara edit port di sshd_config saja sudah cukup, persis seperti Cara 1.

Cara 3: CentOS, AlmaLinux, Rocky Linux, dan RHEL

Di distro keluarga Red Hat, ada dua hal ekstra yang harus dikonfigurasi selain file SSH: SELinux dan firewalld.

SELinux punya daftar port yang diizinkan untuk setiap layanan, termasuk SSH. Kalau kamu ganti port SSH tanpa memberi tahu SELinux, service bisa gagal restart meski konfigurasi sshd_config sudah benar.

Langkah 1: Install semanage (jika belum ada)

semanage adalah alat untuk mengelola kebijakan SELinux, termasuk izin port.

Kalau belum terinstall:

sudo dnf install -y policycoreutils-python-utils

Langkah 2: Tambahkan port ke izin SELinux

Beri tahu SELinux bahwa port baru SSH (contoh: 2222) boleh digunakan untuk service SSH:

sudo semanage port -a -t ssh_port_t -p tcp 2222

Verifikasi hasilnya:

sudo semanage port -l | grep ssh

Kamu harus melihat port 2222 muncul bersama port 22 dalam daftar ssh_port_t.

⚠️ Kalau Muncul Error "Port already defined"
Kalau muncul error ValueError: Port already defined, artinya port tersebut sudah pernah didaftarkan di SELinux.

Gunakan flag -m (modify) alih-alih -a (add):

sudo semanage port -m -t ssh_port_t -p tcp 2222

Langkah 3: Edit file konfigurasi SSH

sudo nano /etc/ssh/sshd_config

Cari baris #Port 22, lalu uncomment dan ubah menjadi:

Port 2222

Simpan dan keluar.

Lalu validasi sintaks konfigurasi:

sudo sshd -t

Kalau tidak ada output, berarti konfigurasi valid.

Langkah 4: Buka port baru di firewalld

sudo firewall-cmd --permanent --add-port=2222/tcp
sudo firewall-cmd --reload

Verifikasi:

sudo firewall-cmd --list-ports

Port 2222/tcp harus muncul dalam daftar.

Langkah 5: Restart SSH

Di CentOS, AlmaLinux, Rocky Linux, dan RHEL, nama service-nya adalah sshd, bukan ssh.

Restart service:

sudo systemctl restart sshd

Lalu cek statusnya:

sudo systemctl status sshd

Kalau status menunjukkan active (running), berarti SSH berhasil dijalankan ulang.

Langkah 6: Verifikasi port listening

Pastikan SSH sekarang sudah mendengarkan di port baru:

sudo ss -tlnp | grep sshd

Outputnya harus menunjukkan port 2222, misalnya:

LISTEN 0 128 0.0.0.0:2222
LISTEN 0 128    [::]:2222

Langkah 7: Test dari terminal baru

Jangan logout session aktif terlebih dahulu.

Buka terminal baru dan test koneksi:

ssh -p 2222 user@ip-server-kamu

Kalau berhasil login, berarti konfigurasi sudah berjalan normal.

Langkah 8: Hapus akses port 22 setelah berhasil

Jangan lakukan langkah ini sebelum memastikan login ke port baru berhasil.

Hapus akses firewall untuk port lama:

sudo firewall-cmd --permanent --remove-port=22/tcp
sudo firewall-cmd --reload

Troubleshooting

SSH gagal restart / status failed

Kemungkinan besar ada error di konfigurasi SSH.

Lakukan validasi konfigurasi:

sudo sshd -t

Kalau ada error, biasanya akan ditampilkan lengkap beserta nomor baris yang bermasalah.

Untuk melihat log detail service:

sudo journalctl -xeu sshd

Di Ubuntu versi baru yang menggunakan socket activation, gunakan:

sudo journalctl -xeu ssh.socket

Bisa konek ke port baru, tapi port 22 masih terbuka

Biasanya ada salah satu dari kondisi berikut:

  • Rule firewall port 22 belum dihapus
  • Masih ada Port 22 aktif di sshd_config
  • Service SSH belum direstart
  • Di Ubuntu socket activation, ssh.socket masih listen di port 22

Cek konfigurasi port:

grep -R "^Port" /etc/ssh/sshd_config /etc/ssh/sshd_config.d/*

Lalu cek port yang sedang listen:

sudo ss -tlnp | grep ssh

Kalau port 22 masih muncul, periksa kembali konfigurasi dan restart service SSH.


Di Ubuntu 22.10+: port tidak berubah meski sudah edit sshd_config

Di Ubuntu versi baru, OpenSSH bisa menggunakan mode socket activation melalui ssh.socket.

Dalam mode ini, port tidak dikontrol langsung oleh sshd_config, melainkan oleh systemd socket.

Kamu perlu membuat file override:

/etc/systemd/system/ssh.socket.d/listen.conf

Contoh isi:

[Socket]
ListenStream=
ListenStream=0.0.0.0:2222
ListenStream=[::]:2222

Setelah itu reload systemd:

sudo systemctl daemon-reload

Lalu restart socket:

sudo systemctl restart ssh.socket

Kalau muncul error seperti:

ssh.socket: Socket service ssh.service already active, refusing.

artinya ssh.service masih aktif dan harus dihentikan terlebih dahulu:

sudo systemctl stop ssh.service
sudo systemctl disable ssh.service

SSH port baru tidak bisa diakses dari luar server

Kalau sshd sudah running tetapi tetap muncul error seperti:

Connection refused

atau:

Connection timed out

kemungkinan penyebabnya:

  • Firewall belum membuka port baru
  • Security Group / Cloud Firewall provider belum membuka port
  • SSH hanya listen di IPv6 ([::]) dan belum listen di IPv4 (0.0.0.0)
  • Service SSH belum berhasil bind ke port baru

Cek port listening:

sudo ss -tlnp | grep ssh

Pastikan muncul:

0.0.0.0:2222
[::]:2222

Kalau hanya muncul [::]:2222, tambahkan bind IPv4 pada konfigurasi socket:

ListenStream=0.0.0.0:2222

Di AlmaLinux / Rocky Linux / RHEL: sshd gagal start setelah ganti port

Kemungkinan besar SELinux memblok port baru SSH.

Tambahkan port baru ke policy SELinux:

sudo semanage port -a -t ssh_port_t -p tcp 2222

Kalau muncul:

ValueError: Port already defined

gunakan mode modify:

sudo semanage port -m -t ssh_port_t -p tcp 2222

Lalu restart SSH:

sudo systemctl restart sshd

Dan cek statusnya:

sudo systemctl status sshd

Kesimpulan

Mengganti port SSH default memang bukan solusi keamanan utama, tetapi cukup efektif untuk mengurangi noise dari bot scanner otomatis yang terus mencoba login ke port 22. Log server jadi jauh lebih bersih, dan percobaan brute force acak biasanya langsung berkurang drastis.

Kunci paling pentingnya adalah urutan konfigurasi yang benar: validasi konfigurasi, buka firewall, restart service SSH, lalu test dari terminal lain sebelum menutup sesi aktif. Jangan sampai terkunci dari server sendiri hanya dikarenakan lupa membuka port baru atau salah konfigurasi.

Perlu diingat juga bahwa tiap distro punya perlakuan berbeda. Pada Ubuntu versi baru yang menggunakan ssh.socket (socket activation), perubahan port perlu dilakukan lewat override systemd. Sementara di CentOS, AlmaLinux, Rocky Linux, dan RHEL, SELinux juga perlu diberi izin tambahan menggunakan semanage.

Selain mengganti port, kamu juga sangat disarankan melanjutkan hardening SSH dengan:

  • menonaktifkan login password,
  • menggunakan SSH key,
  • membatasi akses root,
  • dan memasang proteksi seperti Fail2Ban.

Semua langkah kecil ini akan membuat server Linux jauh lebih aman untuk penggunaan jangka panjang.

Semangat terus, Kawan Belajar!

Butuh bantuan lebih lanjut?

Jangan ragu untuk menghubungi tim support kami jika Anda memiliki pertanyaan atau masalah terkait layanan CloudKilat.

Hubungi Kami