• Indonesian
  • English
  • Fix cPanel FTP Connection Refused: 5 Langkah Cepat 2026

    Kecepatan:
    ⏱ 9 min read

    Cara Fix cPanel FTP Connection Refused di Production: 5 Langkah Cepat buat NOC Engineer 2026

    Skip basa-basi. Client nelpon jam 9 pagi, websitenya buka normal, SSH juga jalan, tapi katanya FTP-nya connection refused terus sejak kemarin sore. Dari nada suaranya aja keliatan dia udah capek ngetes-ngetes sendiri. Tenang, kasus kayak gini biasanya gak serumit keliatannya.

    Artikel ini bukan bahan bacaan buat yang masih baru belajar. Ini catatan lapangan dari ticket yang pernah aku handle berkali-kali, urut dari cek paling cepet sampai yang paling dalam. Ikutin berurutan aja, jangan lompat-lompat, biar gak buang waktu.

    Difficulty: Beginner
    Last Updated: Agustus 2026
    Tested On: cPanel/WHM 118, AlmaLinux 8 & 9, CentOS 7, CSF v14.x

    Sebelum ngecek apa-apa, satu konsep yang wajib kamu paham dulu: connection refused itu beda sama connection timeout. Refused artinya server ngebales “gak mau” — TCP reset dikirim balik ke client. Timeout artinya paketmu di-drop diam-diam atau gak dibales sama sekali. Ini penting banget karena nentuin kita musti liat ke mana. Nek refused, tersangka utamanya cuma dua: service FTP-nya mati, atau port 21 diblokir sama sesuatu yang bales reset.

    Dampaknya ke production jelas terasa. Client gak bisa upload file, update konten macet, deployment workflow nyangkut, dan kalau ini shared hosting, support ticket ikutan numpuk karena user laen panik kena imbas. Kasus yang paling sering aku temuin di lapangan cuma tiga: pertama, pure-ftpd crash atau kena OOM kill terus gak otomatis nyala lagi. Kedua, firewall kayak CSF atau firewall cloud yang blok port 21 karena salah konfigurasi. Ketiga, IP client masuk deny list gara-gara salah identifikasi brute-force.

    Nah, sekarang kita eksekusi. Semua langkah di bawah ini jalan dari SSH root. Kalau kamu belum punya akses SSH, minta dulu ke provider hosting — diagnosis yang bener tetep lewat server, bukan lewat cPanel doang.

    Step 1: Pastiin Gejalanya — Refused Apa Timeout?

    Jangan langsung asal restart. Cek dulu dari sisi client biar kamu tau harus liat ke mana. Test port 21 pake netcat atau telnet:

    nc -zvw5 ftp.domain.com 21
    telnet ftp.domain.com 21

    Output yang sehat kira-kira gini:

    220---------- Welcome to Pure-FTPd ----------
    220-You are user number 1 of 500 allowed
    220-Local time is now ...
    220-Only anonymous FTP is banned

    Kalau yang muncul “Connection refused”, berarti ada yang ngebales reset — service mati atau firewall nge-drop aktif. Kalau malah hang, timeout, atau “Unable to connect”, berarti paket gak dibales sama sekali — dan firewall di level cloud paling sering biang keroknya. Catet hasilnya, terus lanjut ke Step 2.

    Tips dari aku: jangan cuma test dari server-nya sendiri. Test juga dari luar, misalnya pake online port checker atau dari VPS laen. Karena kadang dari dalam server keliatan sehat, padahal dari luar port-nya mentok.

    Step 2: Cek Status Pure-FTPd

    Default FTP server cPanel itu Pure-FTPd, bukan vsftpd atau proftpd. Cek statusnya dulu:

    systemctl status pure-ftpd
    service pure-ftpd status
    ps aux | grep pure-ftpd

    Kalau output-nya “Active: inactive (dead)” atau process-nya gak ada, udah ketemu biang keroknya. Hidupin dan pastiin auto-start biar gak mati lagi pas reboot:

    systemctl start pure-ftpd
    systemctl enable pure-ftpd

    Terus test lagi dari client. Kalau tetep refused, kemungkinan service-nya gagal start. Cek log-nya:

    journalctl -u pure-ftpd -n 50
    grep -i pure-ftpd /var/log/messages

    Error yang paling sering muncul di log: port 21 udah kepegang service laen (misalnya sisa proftpd atau vsftpd yang dulu pernah dipasang), atau pure-ftpd gagal baca file pid. Sebelum restart, cek dulu siapa yang pegang port 21:

    ss -tlnp | grep :21

    Kalau ada process laen yang pegang, matiin dulu. Gak jarang aku nemu kasus “connection refused” yang penyebabnya cuma sisa service FTP lama masih nyoba pegang port dan pure-ftpd gak bisa jalan. Habis itu baru start pure-ftpd-nya.

    Step 3: Cek Listener dan Binding IP

    Setelah service jalan, pastiin dia bener-bener nge-listen di IP publik. Bukan cuma di localhost:

    netstat -tlnp | grep :21
    ss -tlnp | grep :21

    Yang sehat kelihatan gini:

    tcp  0  0 0.0.0.0:21  0.0.0.0:*  LISTEN  1234/pure-ftpd

    Kalau yang keluar cuma 127.0.0.1:21, berarti pure-ftpd cuma nge-listen di localhost. Kamu gak akan pernah bisa konek dari luar, dan ini biasanya gara-gara konfigurasi yang salah. Nek gak ada baris sama sekali, service-nya emang mati, balik ke Step 2.

    Selain itu, cek juga apakah client kamu konek ke IP yang bener. Kadang DNS-nya nyasar ke IP lama atau ke IP server laen. Cek dengan:

    dig +short ftp.domain.com

    Bandingin sama IP publik server yang sekarang. Kalau beda, itu masalah DNS, bukan FTP.

    Step 4: Rebuild Konfigurasi dari WHM

    Kalau service jalan, listener oke, tapi tetep refused, biasanya konfigurasinya yang bermasalah. Cara paling bersih: rebuild dari WHM.

    Login ke WHM (biasanya port 2087), terus buka Home > Services Configuration > FTP Server Configuration, terus klik tombol Build and Install. Ini bakal generate ulang file konfigurasi pure-ftpd yang bersih dan sekalian ngeinstall ulang binary-nya kalau ada yang korup.

    Setelah itu, cek manual file konfigurasinya:

    cat /etc/pure-ftpd.conf

    Yang sering bikin masalah dan wajib kamu perhatiin:

    • ForcePassiveIP — kalau server pernah pindah IP dan nilai ini masih IP lama, koneksi FTP mati total dari luar. Update ke IP publik sekarang.
    • PassivePortRange — kalau kosong, pake range default. Yang penting range ini dibuka juga di firewall.
    • MaxClientsNumber — kalau ke-set 0, gak ada satu pun client yang bisa konek.
    • AnonymousOnly — jangan nyalain kalau client butuh login pake user cPanel.
    • MaxIdleTime — kecil banget nilainya bikin koneksi tiba-tiba putus di tengah.

    Setelah rebuild, restart service:

    systemctl restart pure-ftpd

    Ulangi test di Step 1. Kalau udah dapet banner 220, layer FTP-nya udah sehat.

    Step 5: Cek Firewall — CSF, Firewall cPanel, dan Cloud

    Ini sumber masalah nomor satu di production. Kalau service dan listener udah sehat tapi client tetep refused, firewall yang jadi tersangka. Mulai dari yang lokal dulu, baru ke level cloud.

    Kalau server-nya pake CSF, cek status dan daftar port:

    csf -l
    grep -E '^TCP_IN' /etc/csf/csf.conf

    Pastiin port 21 ada di daftar TCP_IN. Kalau gak ada, port 21 diblokir buat semua orang. Lalu cek apakah IP client kamu keblokir:

    csf -g 103.90.xxx.xxx

    Output “csf: DROP” berarti IP-nya ada di deny list. Buang pake:

    csf -dr 103.90.xxx.xxx

    Atau kalau mau lebih aman, pake temporary remove: csf -tr 103.90.xxx.xxx. Bedanya, kalau IP-nya beneran attacker, dia bakal ke-block lagi otomatis sama LFD.

    Warning: Jangan main csf -f (flush) di production tanpa alasan yang jelas. Itu nutup semua koneksi aktif, termasuk SSH kamu sendiri. Kalau ada IP yang salah ke-blok, cukup csf -dr doang.

    Terus cek kenapa IP-nya bisa keblokir. Log-nya di:

    tail -100 /var/log/csf.log
    tail -100 /var/log/lfd.log

    Biasanya ada percobaan brute-force FTP dari IP itu sebelumnya dan LFD nge-blok. Tapi hati-hati: IP dinamis client bisa kena false positive, apalagi kalau ISP-nya CGNAT. Kalau IP-nya aman, remove terus suruh client ganti password FTP-nya.

    Jangan lupa dua lapis firewall laen:

    • Firewall bawaan cPanel: WHM > Security Center > Firewall > IP Deny Manager. Cek IP client ada yang ke-list gak.
    • Firewall cloud: security group AWS, firewall DigitalOcean/Vultr/Linode, dsb. Ini yang biasanya bikin timeout kalau port 21 gak dibuka.

    Dan terakhir, cek juga pembatasan di level akun: WHM > Tweak Settings ada opsi FTP, dan di cPanel > FTP Accounts pastiin user-nya masih aktif dan gak ke-restrict IP. Kadang masalahnya bukan di jaringan, tapi di settingan akun.

    Step 6 (Bonus): Passive Port yang Keblokir

    Ini kasus paling menjebak. Client bisa login, tapi pas mau listing directory atau upload, muncul connection refused atau hang. Itu bukan port 21 — itu data connection di port pasif.

    Pure-FTPd pake range port pasif, di cPanel default-nya 30000-50000. Range ini harus dibuka di firewall kalau client pakai mode pasif — dan mode pasif itu default di hampir semua FTP client. Di CSF, pastiin range-nya ada di TCP_IN:

    TCP_IN = "20,21,30000:50000,25,22,53,80,443,..."

    Lalu cocokin sama range di pure-ftpd.conf:

    grep -i passive /etc/pure-ftpd.conf

    Setelah ganti, restart dua-duanya:

    systemctl restart csf
    systemctl restart pure-ftpd

    Alternatif darurat kalau client lagi buru-buru: suruh pake Active mode dulu atau SFTP, sambil kamu beresin range port-nya pelan-pelan.

    Tabel Troubleshooting Cepat

    Gejala Kemungkinan Penyebab Fix Tercepat
    Connection refused di port 21 pure-ftpd mati atau port kepegang service laen systemctl start pure-ftpd, cek ss -tlnp | grep :21
    Refused tapi SSH aman Firewall CSF atau firewall cPanel blok port 21 csf -g <IP>, cek TCP_IN di csf.conf
    Login sukses tapi listing hang Passive port 30000-50000 keblokir Buka range di firewall
    Koneksi telat atau timeout Firewall cloud (SG AWS, DO, Vultr) blok Buka port 21 di security group
    Refused abis pindah server ForcePassiveIP masih nyimpen IP lama Update di /etc/pure-ftpd.conf
    Semua user gak bisa konek MaxClientsNumber 0 atau service down Cek config, restart pure-ftpd

    troubleshooting cPanel FTP connection refused cek port 21

    FAQ

    Q: Kenapa FTP connection refused tapi SSH bisa?

    Biasanya karena port 21 diblokir firewall atau service pure-ftpd-nya mati, sementara port 22 (SSH) aman. Keduanya service dan port yang beda, jadi wajar salah satu doang yang kena.

    Q: Apa bedanya FTP, FTPS, dan SFTP?

    FTP itu port 21, plaintext. FTPS FTP di atas TLS, biasanya port 21 atau 990, tapi data connection-nya tetap butuh range pasif dibuka. SFTP itu SSH File Transfer yang jalan di port 22 — paling simpel kalau tujuannya cuma biar kerjaan kelar cepet.

    Q: Gimana cara buka passive port di CSF?

    Edit /etc/csf/csf.conf, pastiin 30000:50000 ada di baris TCP_IN, terus restart csf. Range-nya juga harus cocok sama PassivePortRange di /etc/pure-ftpd.conf.

    Q: Pure-FTPd gak mau start, gimana?

    Cek dulu journalctl -u pure-ftpd -n 50. Error paling umum: port 21 kepegang service laen atau file pid bermasalah. Matiin service laennya, atau rebuild konfigurasi lewat WHM > FTP Server Configuration.

    Q: Apakah cPanel pakai vsftpd?

    Gak. Default FTP server cPanel itu Pure-FTPd. VSFTPd kadang dipasang manual, tapi bisa bikin konflik port 21 kalau dua-duanya nyala bareng.

    Author: Syslog Solutions — NOC & Server Management Team. We handle 500+ servers daily, from shared hosting to enterprise dedicated infrastructure.

    Yaudah, itu doang. Sebelum close ticket, pastiin kamu udah cek: 1) gejala refused apa timeout, 2) status pure-ftpd dan listener port 21, 3) firewall CSF plus firewall cloud, 4) range passive port. Kalau semua udah bener dan client udah bisa konek, case closed. Done. Buat yang mau ngulik lebih dalam, baca juga panduan CSF firewall dasar, terus cek perbedaan FTP, SFTP, dan FTPS biar gak salah pilih protokol. Kalau sekalian mau belajar akses server lewat SSH, mampir ke cara akses SSH server. Yang paling penting sekarang: praktekin langkah-langkahnya urut dan catet hasil tiap step. Gas!