Server Solusi – Koneksi SSH yang tiba-tiba gagal bisa menghambat pekerjaan administrasi server, mulai dari memperbarui aplikasi hingga memeriksa layanan website. Salah satu pesan yang sering muncul adalah ssh: connect to host ... port 22: Connection refused.
Pesan tersebut menunjukkan bahwa koneksi TCP ke alamat dan port tujuan ditolak. Penyebabnya bisa berupa layanan SSH yang tidak berjalan, port yang salah, konfigurasi sshd yang berubah, atau aturan jaringan yang menolak koneksi.
Saya tidak memiliki log atau kronologi server tertentu untuk dijadikan dasar pengalaman perbaikan langsung. Karena itu, panduan ini menggunakan pendekatan troubleshooting praktis: setiap langkah dimulai dari pemeriksaan yang aman, kemudian dilanjutkan ke solusi sesuai hasil diagnosis.
Jawaban Singkat: Mengapa SSH Connection Refused Terjadi?
Cara mengatasi SSH connection refused di VPS adalah dengan memastikan alamat IP dan port yang digunakan benar, memeriksa status layanan SSH, memastikan sshd mendengarkan pada port yang sesuai, lalu mengecek firewall server dan firewall dari penyedia VPS.
Pada Ubuntu dan Debian, layanan tersebut biasanya dikelola melalui ssh.service, sedangkan pada beberapa distribusi Linux lain namanya sshd.service. Jika kamu tidak dapat masuk melalui SSH sama sekali, gunakan console atau fitur VNC/serial console dari panel penyedia VPS untuk menjalankan pemeriksaan dari dalam server.
Jangan langsung menonaktifkan firewall atau melakukan reboot. Pemeriksaan status service dan port terlebih dahulu akan membantu mempersempit sumber masalah tanpa mengubah konfigurasi yang sebenarnya masih benar.
1. Memahami Gejala dan Penyebab SSH Connection Refused
Pesan error yang tampil dapat memberikan petunjuk awal mengenai bagian yang perlu diperiksa.
| Pesan atau kondisi | Kemungkinan penyebab | Pemeriksaan awal |
|---|---|---|
Connection refused | Tidak ada layanan yang menerima koneksi pada port tujuan, atau koneksi ditolak secara aktif | Status SSH dan port listening |
Connection timed out | Paket tidak mendapat respons tepat waktu, misalnya karena firewall, routing, atau server tidak terjangkau | Firewall, IP, routing, dan status VPS |
Permission denied | Koneksi sudah mencapai layanan SSH, tetapi autentikasi ditolak | Username, password, atau SSH key |
No route to host | Ada masalah jangkauan jaringan atau penolakan jaringan yang dilaporkan sebagai unreachable | Routing, IP, dan firewall |
Connection refused setelah mengganti port | Client masih menggunakan port lama atau service belum mendengarkan pada port baru | sshd_config dan port yang aktif |
Perbedaan tersebut penting. Jika kamu mendapatkan Permission denied, memperbaiki firewall biasanya bukan langkah yang tepat karena proses koneksi sudah mencapai tahap autentikasi.
Penyebab yang paling perlu diperiksa
Layanan SSH berhenti. Service mungkin tidak aktif setelah perubahan konfigurasi, pembaruan sistem, atau kegagalan saat startup.
Port SSH tidak sesuai. Port standar SSH adalah TCP 22, tetapi administrator dapat mengubahnya. Jika server mendengarkan pada port 2222, misalnya, koneksi ke port 22 tidak akan mencapai layanan tersebut.
Firewall menolak koneksi. Aturan ufw, nftables, firewall penyedia VPS, atau security group dapat membatasi akses ke port SSH.
Konfigurasi alamat listening keliru. Direktif ListenAddress dapat membatasi SSH hanya pada alamat tertentu, sehingga koneksi melalui alamat IP publik tidak diterima.
Paket SSH server tidak tersedia atau gagal berjalan. VPS yang baru dibuat atau instalasi Linux tertentu mungkin belum memiliki OpenSSH Server, meskipun klien SSH sudah tersedia.
2. Diagnosis Awal Sebelum Mengubah Konfigurasi
Sebelum memperbaiki server, kumpulkan informasi dasar. Dengan begitu, kamu tidak perlu mengubah banyak pengaturan sekaligus dan kesulitan mengetahui penyebab sebenarnya.
Langkah 1: Pastikan IP dan port tujuan benar
Dari komputer lokal, jalankan:
ssh -v root@203.0.113.10Ganti root dengan username yang benar dan 203.0.113.10 dengan IP VPS kamu. Alamat pada contoh tersebut merupakan IP dokumentasi, bukan alamat server nyata.
Opsi -v menampilkan informasi proses koneksi SSH. Perhatikan bagian yang menyebut alamat tujuan dan port yang sedang dicoba.
Jika port SSH bukan 22, gunakan:
ssh -v -p 2222 root@203.0.113.10Sesuaikan angka 2222 dengan port yang telah dikonfigurasi di server.
Hasil yang perlu diperhatikan: jika client mencoba port yang keliru, perbaiki parameter koneksi terlebih dahulu. Jika IP dan port sudah benar tetapi koneksi tetap ditolak, lanjutkan pemeriksaan dari console VPS.
Langkah 2: Periksa apakah VPS masih aktif
Buka panel penyedia VPS dan pastikan status mesin virtual menunjukkan kondisi berjalan. Jika tersedia, gunakan console untuk melihat apakah sistem berhasil melakukan boot dan apakah ada pesan kesalahan.
Status VPS yang aktif tidak otomatis membuktikan bahwa SSH berfungsi. Mesin virtual bisa berjalan normal sementara layanan SSH berhenti atau port aksesnya tidak terbuka.
Langkah 3: Periksa status service SSH
Masuk melalui console penyedia VPS, lalu jalankan perintah yang sesuai dengan distribusi Linux.
Untuk Ubuntu atau Debian:
sudo systemctl status sshUntuk distribusi yang menggunakan nama service sshd, misalnya beberapa instalasi Rocky Linux, AlmaLinux, atau Fedora:
sudo systemctl status sshdPerhatikan status seperti active (running), inactive, atau failed.
Jika service berstatus
active (running), periksa port listening dan firewall.Jika berstatus
inactive, periksa alasan service berhenti sebelum menjalankannya kembali.Jika berstatus
failed, baca log untuk mengetahui apakah ada kesalahan konfigurasi, masalah host key, atau kegagalan startup lainnya.
Langkah 4: Periksa port yang benar-benar digunakan
Jalankan:
sudo ss -lntp | grep -E 'ssh|:22|:2222'Perintah ini menampilkan socket TCP yang sedang mendengarkan dan, jika tersedia, proses pemiliknya. Contoh port 2222 hanya untuk ilustrasi; sesuaikan dengan port yang kamu gunakan.
Jika tidak ada hasil, bukan berarti pasti tidak ada layanan SSH karena port bisa berbeda dari contoh. Periksa seluruh daftar port listening:
sudo ss -lntpCari port SSH yang dikonfigurasi. Jika service aktif tetapi tidak mendengarkan pada alamat dan port yang diharapkan, periksa konfigurasi sshd dan log startup.
3. Cara Memperbaiki SSH Connection Refused di VPS
Setelah mendapatkan hasil diagnosis, pilih tindakan yang sesuai. Hindari menjalankan semua perintah sekaligus tanpa mengetahui kondisi server.
Solusi 1: Jalankan kembali service SSH yang berhenti
Jika status service menunjukkan inactive dan tidak ada indikasi masalah konfigurasi, kamu dapat mencoba menjalankannya.
Ubuntu atau Debian:
sudo systemctl start sshDistribusi dengan nama service sshd:
sudo systemctl start sshdKemudian periksa kembali:
sudo systemctl status sshGanti nama service pada perintah pemeriksaan jika distribusi kamu menggunakan sshd.
Mengapa langkah ini diperlukan? Server SSH harus berjalan agar dapat menerima koneksi masuk. Namun, jika service langsung berhenti lagi, jangan terus mengulang perintah start. Periksa log untuk menemukan penyebabnya.
Jika SSH memang harus tersedia setiap kali VPS melakukan boot, periksa juga apakah service telah diaktifkan:
sudo systemctl is-enabled sshUntuk mengaktifkan service pada saat boot Ubuntu/Debian, jika memang sesuai dengan kebutuhan server:
sudo systemctl enable sshPerintah enable mengatur aktivasi saat boot, sedangkan start menjalankan service saat ini. Keduanya memiliki fungsi berbeda.
Solusi 2: Periksa log jika service gagal berjalan
Untuk Ubuntu atau Debian, jalankan:
sudo journalctl -u ssh -n 100 --no-pagerUntuk service bernama sshd, gunakan:
sudo journalctl -u sshd -n 100 --no-pagerLog dapat menunjukkan apakah service gagal karena sintaks konfigurasi, host key yang tidak tersedia, atau masalah lain.
Pada beberapa distribusi, informasi tambahan juga tersedia melalui /var/log/auth.log atau /var/log/secure. Lokasi log bergantung pada distribusi dan konfigurasi sistem.
Jangan langsung menghapus file host key atau mengganti permission seluruh direktori SSH. Jika log menunjukkan masalah host key atau permission, periksa file yang disebutkan secara spesifik dan ikuti prosedur perbaikan yang sesuai.
Solusi 3: Validasi konfigurasi SSH sebelum restart
File konfigurasi utama OpenSSH Server biasanya berada di:
/etc/ssh/sshd_configPeriksa nilai Port dan ListenAddress, serta konfigurasi tambahan jika digunakan. Sebelum mengedit file, buat backup:
sudo cp -a /etc/ssh/sshd_config /etc/ssh/sshd_config.bakSetelah membuat perubahan, validasi sintaks:
sudo sshd -tJika perintah tidak menampilkan pesan kesalahan, pemeriksaan sintaks dan host key dasar berhasil. Namun, ini tidak menjamin koneksi eksternal akan berhasil.
Jika ada kesalahan, perbaiki bagian yang dilaporkan sebelum melakukan restart. Perlu diingat, beberapa distribusi menggunakan file tambahan di /etc/ssh/sshd_config.d/; perubahan pada file utama belum tentu menjadi nilai efektif jika ada konfigurasi lain yang memengaruhinya.
Setelah konfigurasi dinyatakan valid, terapkan perubahan dengan service yang sesuai:
sudo systemctl restart sshPeringatan: restart SSH saat konfigurasi masih salah dapat membuat akses baru gagal. Pertahankan sesi console penyedia VPS tetap terbuka dan uji koneksi baru sebelum menutup akses pemulihan tersebut.
Solusi 4: Buka port SSH pada firewall server
Jika service aktif dan sudah mendengarkan pada port yang benar, periksa firewall sistem operasi.
Pada Ubuntu atau Debian yang menggunakan UFW:
sudo ufw status numberedPeriksa apakah port SSH yang digunakan memiliki aturan yang mengizinkan koneksi dari alamat IP kamu.
Jika SSH menggunakan port standar 22, aturan yang umum digunakan adalah:
sudo ufw allow 22/tcpJika menggunakan port 2222:
sudo ufw allow 2222/tcpGanti angka port sesuai konfigurasi aktual. Sebelum menambahkan aturan, pastikan kamu memang menggunakan UFW dan memahami kebijakan firewall yang sudah ada.
Jika VPS hanya perlu diakses dari IP administrator tertentu, kamu dapat membatasi sumber koneksi:
sudo ufw allow from 198.51.100.25 to any port 22 proto tcpAlamat 198.51.100.25 di atas merupakan alamat dokumentasi. Ganti dengan IP publik administrator yang benar dan port SSH yang digunakan.
Hal yang perlu diperhatikan: jangan mengaktifkan UFW secara sembarangan pada server yang sudah memiliki aturan firewall khusus. Pastikan akses SSH diizinkan terlebih dahulu agar kamu tidak kehilangan koneksi ketika firewall diaktifkan.
Jika menggunakan nftables, firewalld, atau sistem firewall lain, periksa aturan pada sistem tersebut. Jangan menerapkan aturan UFW secara otomatis jika UFW tidak digunakan.
Solusi 5: Periksa firewall dan security group dari penyedia VPS
Firewall tidak selalu berada di dalam sistem operasi. Sebagian penyedia VPS menyediakan firewall eksternal, network ACL, atau security group melalui dashboard.
Periksa pengaturan tersebut jika:
Service SSH berjalan dan mendengarkan pada port yang benar.
Firewall sistem operasi sudah mengizinkan koneksi.
Koneksi dari luar masih gagal.
Tidak ada masalah pada IP atau jaringan tujuan.
Pastikan aturan inbound mengizinkan protokol TCP pada port SSH yang digunakan, dengan sumber IP sesuai kebijakan keamanan server.
Jika akses SSH sebelumnya dibatasi ke IP tertentu, periksa apakah IP publik koneksi kamu berubah. Perubahan IP pada jaringan rumah atau kantor dapat menyebabkan aturan pembatasan sumber tidak lagi cocok.
Jangan membuka seluruh port VPS hanya untuk mencoba memperbaiki koneksi. Cukup sesuaikan aturan pada port SSH yang diperlukan.
Solusi 6: Pastikan SSH mendengarkan pada alamat yang tepat
Jika service aktif tetapi koneksi ke IP publik tetap ditolak, periksa konfigurasi ListenAddress.
Misalnya, konfigurasi yang membatasi service ke alamat loopback dapat membuat SSH hanya menerima koneksi lokal. Contoh berikut adalah konfigurasi yang mungkin bermasalah jika kamu mengharapkan akses langsung melalui IP publik:
ListenAddress 127.0.0.1Jangan langsung mengubahnya tanpa memeriksa kebutuhan jaringan server. Pada VPS dengan beberapa antarmuka jaringan atau konfigurasi khusus, alamat listening memang dapat dibatasi dengan sengaja.
Periksa juga port efektif menggunakan:
sudo sshd -T | grep -E '^(port|listenaddress) 'Perintah ini menampilkan sebagian konfigurasi efektif sshd. Jika ada aturan Match atau konfigurasi tambahan, nilai tertentu dapat bergantung pada konteks koneksi. Karena itu, hasilnya perlu dibandingkan dengan konfigurasi aktual dan port yang terlihat dari ss.
Jika perlu mengubah konfigurasi, lakukan backup, edit bagian yang relevan, jalankan sudo sshd -t, lalu terapkan perubahan dengan hati-hati.
Solusi 7: Instal OpenSSH Server jika memang belum tersedia
Jika console menunjukkan bahwa program server SSH tidak tersedia, pastikan dahulu apakah paket OpenSSH Server memang belum terpasang.
Pada Ubuntu atau Debian:
dpkg -l openssh-serverJika paket belum terpasang dan kamu memang membutuhkan akses SSH, instal dengan:
sudo apt updatesudo apt install openssh-serverSetelah instalasi, periksa service:
sudo systemctl status sshLangkah ini tidak diperlukan jika paket sudah tersedia dan service gagal berjalan karena masalah lain. Dalam kondisi tersebut, fokuslah pada log dan konfigurasi agar tidak menambah perubahan yang tidak relevan.
4. Cara Memastikan Koneksi SSH Sudah Berfungsi
Setelah melakukan perbaikan, jangan hanya mengandalkan status service. Pastikan koneksi dapat dibuat dari komputer yang benar-benar akan digunakan untuk administrasi server.
Uji port dari komputer lokal
Di Linux atau macOS, kamu dapat menggunakan:
nc -vz 203.0.113.10 22Di Windows, PowerShell menyediakan perintah berikut:
Test-NetConnection 203.0.113.10 -Port 22Ganti alamat dan port dengan data VPS kamu.
Hasil koneksi yang berhasil menunjukkan bahwa port tujuan dapat dijangkau melalui jalur pengujian tersebut. Namun, tes ini belum membuktikan bahwa autentikasi SSH berhasil.
Uji login dengan SSH
Jalankan:
ssh -v -p 22 username@203.0.113.10Jika kamu dapat mencapai tahap autentikasi, koneksi TCP dan layanan SSH sudah merespons. Jika login masih ditolak, lanjutkan pemeriksaan username, SSH key, password, atau kebijakan autentikasi.
Jangan menganggap pesan Permission denied sebagai bukti bahwa seluruh masalah sudah selesai. Pesan itu menunjukkan bahwa client mencapai tahap autentikasi, tetapi akses belum berhasil diberikan.
Periksa status service dan log terbaru
Di server, jalankan:
sudo systemctl status sshLalu periksa log terbaru:
sudo journalctl -u ssh --since "10 minutes ago" --no-pagerSesuaikan nama service jika distribusi kamu menggunakan sshd.
Tidak adanya error pada log bukan bukti mutlak bahwa semua jalur jaringan berfungsi. Gabungkan hasil status service, port listening, dan pengujian koneksi eksternal untuk memperoleh gambaran yang lebih lengkap.
5. Pencegahan agar SSH Tidak Mudah Bermasalah Lagi
Beberapa kebiasaan administrasi dapat mengurangi risiko kehilangan akses ke VPS.
Backup konfigurasi sebelum mengubahnya. Simpan salinan
sshd_configdan catat perubahan port atau aturan firewall.Validasi konfigurasi sebelum restart. Gunakan
sudo sshd -tsebelum menerapkan perubahan SSH.Pertahankan jalur pemulihan. Pastikan kamu mengetahui cara membuka console VPS jika koneksi jaringan gagal.
Batasi akses berdasarkan kebutuhan. Jika memungkinkan, izinkan SSH hanya dari IP administrator atau jaringan yang dipercaya.
Pantau log service. Periksa
journalctlketika SSH gagal berjalan atau koneksi mulai bermasalah.Dokumentasikan port dan aturan firewall. Catat port SSH aktual, alamat listening, dan lokasi aturan firewall agar diagnosis berikutnya lebih cepat.
Lakukan pembaruan terencana. Perbarui OpenSSH dan sistem operasi melalui prosedur pemeliharaan yang sesuai, terutama pada server produksi.
Jika kamu mengubah port SSH, uji koneksi melalui port baru sebelum menutup sesi administrasi yang masih aktif. Cara ini membantu mengurangi risiko terkunci di luar server akibat salah konfigurasi.
6. FAQ Seputar SSH Connection Refused di VPS
1. Apa penyebab utama SSH connection refused di VPS?
Penyebab yang umum adalah layanan SSH tidak berjalan, port yang digunakan salah, atau koneksi ditolak oleh aturan jaringan. Periksa status service dan port listening sebelum mengubah firewall.
2. Bagaimana cara mengatasi SSH connection refused di Ubuntu?
Gunakan sudo systemctl status ssh untuk memeriksa layanan. Jika service berhenti, periksa log melalui sudo journalctl -u ssh -n 100 --no-pager. Setelah mengetahui penyebabnya, perbaiki konfigurasi atau jalankan kembali service jika memang aman.
3. Apakah SSH connection refused berarti VPS sedang down?
Tidak selalu. VPS bisa tetap aktif meskipun layanan SSH berhenti atau port SSH tidak menerima koneksi. Periksa status VPS melalui panel penyedia dan gunakan console untuk memeriksa service secara langsung.
4. Mengapa port 22 tetap tidak bisa diakses meskipun SSH aktif?
Service mungkin mendengarkan pada port atau alamat yang berbeda. Firewall sistem operasi, firewall penyedia VPS, atau pembatasan sumber IP juga dapat menghalangi koneksi. Periksa port aktual menggunakan ss -lntp dan tinjau aturan jaringan yang berlaku.
5. Bagaimana jika saya tidak bisa masuk ke VPS melalui SSH maupun terminal?
Gunakan fitur web console, VNC, atau serial console yang disediakan oleh penyedia VPS jika tersedia. Dari sana, periksa status service, konfigurasi SSH, dan firewall. Jika console juga tidak dapat diakses, hubungi dukungan penyedia VPS untuk memeriksa kondisi mesin virtual dan akses pemulihan.
Penutup
Cara mengatasi SSH connection refused di VPS sebaiknya dimulai dengan memeriksa alamat IP dan port tujuan, status service SSH, serta port yang benar-benar mendengarkan. Setelah itu, periksa konfigurasi sshd, firewall sistem operasi, dan aturan jaringan dari penyedia VPS sesuai temuan diagnosis.
Hindari langsung menonaktifkan firewall atau melakukan reboot tanpa mengetahui penyebab masalah. Jika SSH tetap tidak dapat diakses, gunakan console penyedia VPS untuk mengumpulkan log dan memeriksa konfigurasi dari dalam server.
Dengan diagnosis bertahap, kamu dapat mempersempit sumber gangguan dan menerapkan perubahan yang relevan tanpa mengambil risiko yang tidak perlu pada layanan produksi.
