Secure Shell (SSH) adalah protokol jaringan yang menjadi tulang punggung administrasi server dan transfer data aman di seluruh dunia. Secara default, SSH berjalan pada port 22, sebuah standar yang telah diterima secara luas sejak protokol ini pertama kali dikembangkan. Namun, dalam praktik nyata di lingkungan produksi, bergantung pada port default seringkali meninggalkan server rentan terhadap serangan brute-force dan pemindaian otomatis oleh botnet. Oleh karena itu, banyak administrator sistem dan insinyur DevOps memilih untuk mengubah port SSH standar ke port non-standar, seperti 2222, 8022, atau angka acak lainnya di luar rentang port well-known (0-1023).

Menghubungkan ke server yang menggunakan port non-standar memerlukan pengetahuan khusus tentang cara menentukan port tersebut melalui command line. Panduan praktis ini dirancang untuk membantu Anda memahami secara mendalam cara menggunakan perintah SSH dengan port khusus, mulai dari persiapan lingkungan, instalasi, konfigurasi, hingga penanganan masalah yang mungkin muncul di lapangan. Kami akan membahas setiap aspek secara teknis dan detail, memastikan Anda tidak hanya tahu apa perintahnya, tetapi juga mengapa dan bagaimana perintah tersebut bekerja di balik layar.

Yang perlu disiapkan

Sebelum kita mendalami sintaksis dan konfigurasi perintah SSH dengan port khusus, sangat penting untuk memastikan bahwa lingkungan kerja Anda telah memenuhi prasyarat teknis yang diperlukan. Kesalahan paling umum yang dilakukan oleh pemula adalah mencoba menjalankan konfigurasi SSH tingkat lanjut pada sistem yang belum terinstal dengan benar atau tidak memiliki izin yang memadai, yang pada akhirnya menghasilkan pesan error yang membingungkan.

Pertama, mari kita bicarakan tentang sistem operasi yang didukung. Protokol SSH bersifat lintas platform, yang berarti klien dan server SSH tersedia di hampir semua sistem operasi berbasis Unix dan Linux, serta modern Windows. Untuk lingkungan Linux, distribusi berbasis Debian (seperti Ubuntu, Linux Mint) dan berbasis RHEL (seperti CentOS, Fedora, AlmaLinux) sepenuhnya didukung. macOS juga dilengkapi dengan implementasi OpenSSH out-of-the-box, menjadikannya pilihan yang sangat baik untuk workstation administrasi. Bagi pengguna Windows, Anda dapat menggunakan Windows Subsystem for Linux (WSL), Git Bash, atau fitur OpenSSH bawaan yang telah diintegrasikan sejak Windows 10.

Dari perspektif Versi yang dipakai, sangat disarankan untuk menggunakan OpenSSH versi 7.0 atau yang lebih baru. Versi-versi terbaru ini mendukung algoritma kriptografi modern yang lebih aman (seperti ed25519 untuk kunci host dan kunci pengguna) dan telah meninggalkan protokol SSH versi 1 yang sudah usang dan tidak aman. Anda perlu memastikan bahwa baik sisi klien (mesin Anda) maupun sisi server (mesin tujuan) menjalankan versi software yang kompatibel untuk menghindari kegagalan negosiasi kriptografi.

Selain SSH itu sendiri, ada beberapa Alat pendukung yang akan membuat pekerjaan Anda jauh lebih efisien. Tool seperti netstat atau ss untuk memeriksa port yang aktif mendengarkan (listening) di server, dan nmap atau telnet untuk melakukan pengujian konektivitas port dari jarak jauh. Berikut adalah contoh perintah untuk memverifikasi kesiapan lingkungan Anda:

# Memeriksa versi OpenSSH yang terinstal
ssh -V

# Memeriksa apakah port khusus (misal 2222) sudah mendengarkan di server
ss -tulpn | grep 2222

# Menguji konektivitas ke port SSH non-standar dari klien
telnet 192.168.1.10 2222

Dengan memastikan semua prasyarat ini terpenuhi, Anda membangun fondasi yang kokoh sebelum memulai konfigurasi tingkat lanjut. Melewatkan langkah verifikasi ini sering kali menjadi akar dari masalah "Connection Refused" yang akan kita bahas di bagian selanjutnya.

Langkah 1: Instalasi

Proses instalasi SSH terbagi menjadi dua komponen utama: paket klien (client), yang Anda gunakan untuk memulai koneksi dari mesin lokal, dan paket server (server), yang berjalan pada mesin remote dan mendengarkan permintaan koneksi masuk. Pada banyak distribusi desktop Linux dan macOS, klien SSH sudah terinstal secara default. Namun, paket server SSH jarang diinstal secara default kecuali OS tersebut dirancang khusus untuk menjadi server.

Untuk menginstal paket OpenSSH pada sistem berbasis Debian/Ubuntu, Anda akan menggunakan manajer paket APT. Proses ini tidak hanya menginstal binary SSH, tetapi juga mendownload dependensi kriptografi yang diperlukan dan mengatur file konfigurasi default ke lokasi standar /etc/ssh/. Pada sistem berbasis RHEL/Fedora, manajer paket DNF atau YUM digunakan dengan cara yang serupa.

Berikut adalah step-by-step instalasi pada sistem Debian/Ubuntu, termasuk cara mengaktifkan dan memulai layanan (daemon) SSH:

# Perbarui database paket lokal untuk memastikan versi terbaru
sudo apt update

# Instal paket OpenSSH Server dan Client
sudo apt install openssh-server openssh-client -y

# Aktifkan layanan SSH agar berjalan otomatis saat sistem booting
sudo systemctl enable ssh

# Mulai layanan SSH saat ini juga
sudo systemctl start ssh

Setelah menjalankan perintah-perintah di atas, langkah krusial berikutnya adalah verifikasi instalasi. Verifikasi tidak hanya berarti memastikan paket terinstal, tetapi juga memastikan bahwa daemon SSH benar-benar berjalan dan siap menerima koneksi pada port default-nya (22) sebelum kita mengubahnya.

# Verifikasi bahwa binary SSH tersedia dan cek versinya
which ssh
ssh -V

# Verifikasi status layanan SSH Server (harus menunjukkan 'active (running)')
sudo systemctl status ssh

# Verifikasi port default 22 sedang mendengarkan koneksi
sudo ss -tulpn | grep :22

Jika output dari perintah ss menunjukkan bahwa port 22 sedang dalam status LISTEN, maka instalasi server SSH Anda telah berhasil sempurna. Jika Anda menggunakan sistem operasi lain, seperti Fedora, perintah instalasinya adalah sudo dnf install openssh-server, diikuti oleh sudo systemctl enable --now sshd untuk mengaktifkan dan memulai layanan secara simultan. Memahami proses instalasi ini secara mendetail penting karena masalah izin (permissions) pada file binary atau daemon yang gagal start sering kali berakar pada proses instalasi yang tidak tuntas.

Konfigurasi awal

Setelah SSH server terinstal dan berjalan, tugas kita adalah mengonfigurasi sistem agar dapat menerima koneksi pada port non-standar. Konfigurasi SSH server dikendalikan oleh satu file utama: /etc/ssh/sshd_config. File ini berisi arahan-arahnan (directives) yang mengatur setiap aspek perilaku daemon SSH, mulai dari port yang digunakan, metode autentikasi yang diizinkan, hingga kebijakan kriptografi. Sangat penting untuk berhati-hati saat mengedit file ini; kesalahan sintaksis sekecil spasi yang salah bisa menyebabkan daemon SSH gagal memulai ulang (restart), yang pada akhirnya mengunci Anda dari server.

Untuk mengubah port SSH, Anda perlu membuka file sshd_config menggunakan editor teks dengan hak akses root, seperti nano atau vim. Cari baris yang berisi #Port 22. Tanda pagar (#) di awal baris menandakan bahwa baris tersebut adalah komentar dan diabaikan oleh sistem, yang berarti sistem menggunakan nilai default (22). Hapus tanda pagar dan ubah angka 22 ke port yang Anda inginkan, misalnya 2222.

Selain opsi Port, ada opsi penting lainnya yang harus Anda pertimbangkan selama konfigurasi awal untuk memperkuat keamanan server Anda. Opsi PermitRootLogin sebaiknya diatur ke no atau prohibit-password untuk mencegah login langsung sebagai root menggunakan password, yang merupakan vektor serangan brute-force yang sangat umum. Opsi PasswordAuthentication sebaiknya diatur ke no jika Anda berencana menggunakan kunci SSH (SSH keys), yang jauh lebih aman daripada kata sandi.

# Membuka file konfigurasi SSH Server
sudo nano /etc/ssh/sshd_config

# Contoh konfigurasi di dalam file sshd_config:
Port 2222
PermitRootLogin prohibit-password
PasswordAuthentication yes
MaxAuthTries 3

Setelah menyimpan perubahan pada file konfigurasi, perubahan tersebut tidak akan diterapkan secara otomatis. Anda harus me-restart daemon SSH agar membaca konfigurasi yang baru. Namun, sebelum melakukan restart, sangat disarankan untuk menjalankan pengujian sintaksis menggunakan perintah sshd -t. Perintah ini akan memvalidasi file konfigurasi dan menolak restart jika ada kesalahan konfigurasi, mencegah Anda terkunci dari server.

# Menguji validitas konfigurasi SSH sebelum restart
sudo sshd -t

# Jika tidak ada output error, restart layanan SSH
sudo systemctl restart ssh

# Verifikasi bahwa SSH sekarang mendengarkan pada port 2222
sudo ss -tulpn | grep :2222

Testing konektivitas dari mesin lain kini dapat dilakukan dengan menggunakan flag -p untuk menentukan port: ssh username@ip_server -p 2222. Selalu pertahankan sesi koneksi lama Anda terbuka saat menguji konfigurasi SSH baru di sesi terminal lain; ini adalah jaring pengaman praktis agar Anda tidak mengunci diri Anda sendiri keluar dari server jika konfigurasi baru gagal berfungsi.

Contoh penggunaan

Memahami cara menentukan port pada perintah SSH membuka banyak skenario penggunaan praktis di luar sekadar koneksi terminal interaktif dasar. Dalam bagian ini, kita akan mengeksplorasi lima skenario umum di mana flag port digunakan, Contoh output, serta penjelasan mendalam tentang flag yang terlibat.

Skenario 1: Koneksi Terminal Interaktif ke Port Khusus Ini adalah penggunaan paling dasar. Anda ingin masuk ke shell server remote yang dikonfigurasi pada port non-standar. Flag -p (huruf kecil) digunakan secara eksplisit untuk memberi tahu klien SSH ke port mana ia harus mengirimkan paket SYN untuk memulai TCP handshake.

ssh admin@192.168.1.50 -p 8022

Penjelasan Flag: ssh adalah pemanggil program, admin adalah pengguna di server remote, 192.168.1.50 adalah alamat IP tujuan, dan -p 8022 menginstruksikan klien untuk mencoba koneksi ke port 8022 alih-alih port 22. Jika berhasil, Anda akan disambut dengan prompt shell server remote.

Skenario 2: Menyalin File Menggunakan SCP dengan Port Khusus Secure Copy Protocol (SCP) bergantung pada SSH untuk autentikasi dan enkripsi. Namun, flag untuk menentukan port pada SCP berbeda dengan SSH. SCP menggunakan huruf kapital -P untuk menentukan port. Ini adalah jebakan umum yang sering membuat pengguna frustrasi karena menggunakan -p (yang pada SCP berarti mempertahankan waktu modifikasi file, preserve modification times).

scp -P 2222 dokumen.tar.gz admin@192.168.1.50:/home/admin/backup/

Contoh output: Indikator progres penyalinan file, seperti dokumen.tar.gz 100% 45MB 12.5MB/s 00:03, diikuti oleh kembali ke prompt lokal.

Skenario 3: Membuat Terowongan Port Forwarding (Local Port Forwarding) Dalam arsitektur jaringan yang aman, database internal (misalnya MySQL di port 3306) seringkali hanya dapat diakses dari dalam server aplikasi. Anda dapat menggunakan SSH local port forwarding untuk mengamankan koneksi database tersebut ke mesin lokal Anda, sambil menentukan port SSH gateway.

ssh -L 3307:localhost:3306 devuser@10.0.0.5 -p 2222 -N

Penjelasan Flag: -L 3307:localhost:3306 meneruskan port lokal 3307 ke localhost:3306 di sisi server remote. -N memberi tahu SSH untuk tidak membuka shell interaktif, karena kita hanya butuh terowongan. Setelah ini berjalan, Anda dapat menghubungkan klien database lokal Anda ke localhost:3307 untuk mengakses database remote secara aman.

Skenario 4: Menjalankan Perintah Tunggal (Non-Interactive Shell) Kadang-kadang, Anda tidak memerlukan sesi shell interaktif penuh; Anda hanya ingin mengeksekusi satu perintah dan mengambil outputnya, misalnya untuk keperluan script otomasi atau CI/CD pipeline.

ssh sysadmin@192.168.1.50 -p 2222 "uptime && df -h"

Contoh output: Output gabungan dari perintah uptime dan df -h dari server remote akan dicetak langsung di terminal lokal Anda, dan koneksi SSH akan segera ditutup secara otomatis setelah perintah selesai dieksekusi.

Skenario 5: Menggunakan File Konfigurasi SSH Klien (Opsional, tapi Sangat Direkomendasikan) Mengetikkan -p 2222 berulang kali melelahkan dan rentan kesalahan. Alih-alih, Anda dapat mendefinisikan konfigurasi host di file ~/.ssh/config. Ini membuat pengalaman koneksi jauh lebih bersih.

# Isi file ~/.ssh/config
Host server-prod
    HostName 192.168.1.50
    Port 2222
    User admin
    IdentityFile ~/.ssh/id_ed25519

Setelah disimpan, Anda cukup mengetikkan ssh server-prod di terminal, dan SSH akan secara otomatis membaca file config dan menggabungkan semua parameter yang didefinisikan, termasuk port khusus, pengguna, dan kunci SSH yang benar.

Masalah yang sering muncul

Bekerja dengan port SSH non-standar, meskipun meningkatkan keamanan dengan menghindari noise bot otomatis, sering kali memperkenalkan serangkaian tantangan teknis tersendiri. Memahami masalah yang paling sering muncul dan cara mendiagnosisnya adalah keterampilan esensial bagi setiap administrator sistem.

Error Umum 1: Connection Refused Pesan Connection refused terjadi ketika paket TCP Anda berhasil mencapai alamat IP server, tetapi tidak ada proses (daemon) yang mendengarkan pada port yang ditentukan. Ini berbeda dengan Connection timed out, yang menunjukkan paket diblokir oleh firewall sebelum sampai ke server. Penyebab paling umum dari Connection Refused saat mengubah port adalah lupa me-restart layanan SSH setelah mengedit sshd_config, atau membuat typo pada angka port di file konfigurasi. Solusinya adalah login melalui konsol provider cloud (seperti VNC di AWS/GCP), memeriksa file konfigurasi, dan melakukan restart daemon.

Error Umum 2: Permission Denied (publickey) Meskipun secara teknis ini bukan masalah terkait port, error ini sering muncul segera setelah koneksi port berhasil dilakukan. Ini terjadi jika server dikonfigurasi untuk hanya menerima autentikasi kunci (PasswordAuthentication no), tetapi klien tidak menawarkan kunci yang valid, atau izin folder .ssh di server salah. File authorized_keys harus memiliki izin 600, dan folder .ssh harus 700.

Cara Cek Log dan Debug Tips Ketika koneksi SSH gagal tanpa pesan error yang jelas di sisi klien, sisi server adalah tempat terbaik untuk mencari jawaban. Di sistem berbasis systemd, log SSH server disimpan dan dikelola oleh journald. Anda dapat memeriksa log real-time untuk melihat persis mengapa daemon SSH menolak koneksi Anda.

# Di Server: Memeriksa log SSH secara real-time
sudo journalctl -u ssh -f

# Di Server: Mencari pesan error spesifik di log
sudo grep "error" /var/log/auth.log  # Untuk sistem berbasis Debian

Di sisi klien, Anda dapat menggunakan flag -v (verbose) untuk mendapatkan dump lengkap dari proses negosiasi SSH. Flag ini mencetak setiap langkah, dari resolusi DNS, koneksi TCP, pertukaran kunci kriptografi, hingga upaya autentikasi. Jika koneksi gagal, flag -v akan menunjukkan dengan tepat di langkah mana proses tersebut terhenti.

# Di Klien: Menjalankan SSH dengan mode verbose untuk debug
ssh admin@192.168.1.50 -p 2222 -v

# Untuk debug yang lebih mendalam (level 2 atau 3)
ssh admin@192.168.1.50 -p 2222 -vvv

Satu debug tip yang sangat krusial terkait port non-standar adalah Firewall. Sering kali, administrator dengan teliti mengonfigurasi SSH untuk mendengarkan di port 2222 dan lupa membuka port 2222 di firewall server (seperti ufw atau firewalld). Ini akan menghasilkan waktu tunggu habis (timeout). Selalu pastikan aturan firewall mengizinkan lalu lintas TCP masuk pada port baru sebelum Anda mematikan koneksi dari port lama.

# Contoh membuka port 2222 di UFW (Ubuntu Firewall)
sudo ufw allow 2222/tcp
sudo ufw reload

Langkah selanjutnya

Menguasai perintah SSH dengan penentuan port khusus adalah langkah fundamental dalam mengamankan infrastruktur server, namun ini hanya puncak gunung es dari ekosistem SSH dan keamanan jaringan yang luas. Dengan memahami cara menghubungkan klien ke port non-standar, menyalin file melalui port tersebut, dan mem-bypass port default menggunakan file konfigurasi, Anda telah membangun fondasi yang kuat untuk administrasi sistem yang lebih aman.

Namun, keamanan melalui obscurity (menyembunyikan port) bukanlah solusi tunggal. Mengubah port SSH hanya mengurangi noise log dari pemindaian otomatis skrip kiddie; hal ini tidak akan menghentikan penyerang yang bertarget (targeted attacker) yang dapat dengan mudah memindai seluruh port pada server Anda menggunakan tool seperti Masscan atau Shodan. Oleh karena itu, langkah selanjutnya yang paling penting adalah mengimplementasikan autentikasi berbasis kunci kriptografi publik-privat (SSH Keys), secara permanen menonaktifkan autentikasi kata sandi, dan idealnya, menginstal dan mengonfigurasi tool seperti Fail2Ban atau CrowdSec untuk secara dinamis memblokir alamat IP yang menunjukkan perilaku malasah.

Untuk memperdalam pengetahuan Anda, sangat disarankan untuk menjelajahi topik lanjutan terkait, seperti SSH Jump Hosts (ProxyCommand) untuk arsitektur jaringan berlapis, SSH Multiplexing untuk menghemat sumber daya jaringan saat membuka banyak sesi ke server yang sama, dan port knocking (mengetuk port) di mana port SSH tersembunyi hanya akan terbuka setelah klien mengirimkan urutan koneksi ke port tertentu dalam urutan yang benar, seperti kata sandi kedua di tingkat jaringan.

Untuk referensi resmi dan dokumentasi teknis yang mendalam, Anda dapat mengunjungi halaman manual OpenSSH langsung dari terminal Anda dengan mengetikkan man ssh dan man sshd_config, atau mengakses arsip dokumentasi resmi OpenSSH di website OpenBSD. Selain itu, panduan keamanan server dari CIS Benchmarks (Center for Internet Security) menyediakan template konfigurasi SSH tingkat enterprise yang dapat diadopsi untuk lingkungan produksi yang tegas. Teruslah mengeksplorasi, karena setiap lapisan keamanan yang Anda tambahkan secara eksponensial meningkatkan upaya yang diperlukan bagi penyerang untuk menembus sistem Anda.