Perintah ss: memeriksa port dan proses di Linux, dibandingkan dengan netstat
Port mana yang terbuka di server Linux dan siapa yang sedang terhubung bisa Anda periksa dengan perintah ss. ss adalah alat penelusur soket dari iproute2 yang menggantikan netstat. Saat port yang sedang mendengarkan (LISTEN) dan koneksi di server Debian 12 ditelusuri dengan ss, terlihat bahwa di akun biasa nama program yang dijalankan akun lain tidak muncul di kolom Process meskipun -p ditambahkan.
Output di bawah ini dihasilkan dengan locale bahasa Inggris. Alamat server dan pihak lawan ditulis sebagai alamat contoh.
1️⃣ Cara dasar memakai perintah ss dan kolom output
Jika Anda menjalankan ss tanpa opsi, port yang sedang mendengarkan tidak ikut tampil dan hanya soket dengan koneksi yang sudah terjalin yang muncul. Di server uji, baris-baris teratas semuanya soket Unix (u_str, u_dgr) yang dipakai program di dalam server untuk saling berkomunikasi.
ss | head -n 5Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
u_str ESTAB 0 0 * 1013903 * 1013904
u_dgr ESTAB 0 0 * 1013960 * 13394
u_str ESTAB 0 0 * 1013907 * 1013908
u_str ESTAB 0 0 * 46066198 * 46066199Karena itu, untuk melihat koneksi TCP saja, tambahkan -t. Soket Unix hilang, dan di posisi port muncul nama layanan seperti ssh dan https, bukan nomor.
ss -tState Recv-Q Send-Q Local Address:Port Peer Address:Port Process
ESTAB 0 0 203.0.113.10:ssh 198.51.100.7:51114
ESTAB 0 0 203.0.113.10:26676 192.0.2.15:https
ESTAB 0 0 203.0.113.10:29714 192.0.2.16:httpsJika Anda menambahkan -n juga, nomor port tampil apa adanya tanpa diubah menjadi nama layanan.
ss -tnState Recv-Q Send-Q Local Address:Port Peer Address:Port Process
ESTAB 0 0 203.0.113.10:22 198.51.100.7:51114
ESTAB 0 0 203.0.113.10:26676 192.0.2.15:443
ESTAB 0 0 203.0.113.10:29714 192.0.2.16:443Kolom Recv-Q dan Send-Q bermakna lain tergantung status soketnya. Pada soket yang terhubung, Recv-Q adalah jumlah byte yang sudah diterima tetapi belum dibaca program, sedangkan Send-Q adalah jumlah byte yang sudah dikirim tetapi penerimaannya belum dikonfirmasi pihak lawan.
Pada soket yang sedang mendengarkan, Recv-Q berarti jumlah koneksi yang menumpuk di antrean dan Send-Q berarti ukuran maksimum antrean. Arti kedua kolom ini berasal dari penjelasan halaman man netstat(8) milik net-tools.
2️⃣ Memeriksa port di Linux (-tln, -uln, -tulpn)
Output tanpa opsi tidak menampilkan port yang menunggu koneksi, jadi untuk memeriksa port yang terbuka, tambahkan -l yang hanya memilih soket yang sedang mendengarkan. [ss -tln] menampilkan port TCP yang sedang mendengarkan dalam bentuk nomor.
ss -tlnState Recv-Q Send-Q Local Address:Port Peer Address:PortProcess
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
LISTEN 0 511 0.0.0.0:80 0.0.0.0:*
LISTEN 0 511 0.0.0.0:443 0.0.0.0:*
LISTEN 0 511 127.0.0.1:8080 0.0.0.0:*
LISTEN 0 128 [::]:22 [::]:*
LISTEN 0 511 [::]:80 [::]:*
LISTEN 0 511 [::]:443 [::]:*Jika Local Address bernilai 0.0.0.0, soket menerima koneksi yang masuk ke semua alamat IPv4 server; jika 127.0.0.1, koneksi hanya bisa dilakukan dari dalam server. [::] berarti semua alamat IPv6, jadi port 22, 80, dan 443 terbuka di IPv4 maupun IPv6.
Tanpa -n, nomor port berubah menjadi nama layanan. Port 8080 muncul sebagai http-alt.
ss -tlState Recv-Q Send-Q Local Address:Port Peer Address:PortProcess
LISTEN 0 128 0.0.0.0:ssh 0.0.0.0:*
LISTEN 0 511 0.0.0.0:http 0.0.0.0:*
LISTEN 0 511 0.0.0.0:https 0.0.0.0:*
LISTEN 0 511 127.0.0.1:http-alt 0.0.0.0:*
LISTEN 0 128 [::]:ssh [::]:*
LISTEN 0 511 [::]:http [::]:*
LISTEN 0 511 [::]:https [::]:*UDP tidak menjalin koneksi, jadi soket yang sedang mendengarkan pun tidak punya status LISTEN. Kolom status pada output [ss -uln] semuanya UNCONN. Port 68 (bootpc) adalah klien DHCP, dan port 123 (ntp) adalah port sinkronisasi waktu.
ss -ulnState Recv-Q Send-Q Local Address:Port Peer Address:PortProcess
UNCONN 0 0 0.0.0.0:68 0.0.0.0:*
UNCONN 0 0 203.0.113.10:123 0.0.0.0:*
UNCONN 0 0 127.0.0.1:123 0.0.0.0:*
UNCONN 0 0 0.0.0.0:123 0.0.0.0:*
UNCONN 0 0 [::1]:123 [::]:*
UNCONN 0 0 [::]:123 [::]:*Untuk melihat TCP dan UDP sekaligus, gabungkan opsinya seperti [ss -tulpn]. Jika jenisnya lebih dari satu, kolom Netid ditambahkan di paling depan.
ss -tulpnNetid State Recv-Q Send-Q Local Address:Port Peer Address:PortProcess
udp UNCONN 0 0 0.0.0.0:68 0.0.0.0:*
udp UNCONN 0 0 203.0.113.10:123 0.0.0.0:*
udp UNCONN 0 0 127.0.0.1:123 0.0.0.0:*
udp UNCONN 0 0 0.0.0.0:123 0.0.0.0:*
udp UNCONN 0 0 [::1]:123 [::]:*
udp UNCONN 0 0 [::]:123 [::]:*
tcp LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
tcp LISTEN 0 511 0.0.0.0:80 0.0.0.0:*
tcp LISTEN 0 511 0.0.0.0:443 0.0.0.0:*
tcp LISTEN 0 511 127.0.0.1:8080 0.0.0.0:*
tcp LISTEN 0 128 [::]:22 [::]:*
tcp LISTEN 0 511 [::]:80 [::]:*
tcp LISTEN 0 511 [::]:443 [::]:*3️⃣ Memeriksa proses dengan perintah ss (-p)
-p adalah opsi yang menampilkan program pemakai soket di kolom Process. Namun, saat [ss -tlnp] dijalankan di akun biasa pada server uji, kolom Process kosong seperti di bawah ini, seolah-olah opsinya tidak berlaku.
ss -tlnpState Recv-Q Send-Q Local Address:Port Peer Address:PortProcess
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
LISTEN 0 511 0.0.0.0:80 0.0.0.0:*
LISTEN 0 511 0.0.0.0:443 0.0.0.0:*
LISTEN 0 511 127.0.0.1:8080 0.0.0.0:*
LISTEN 0 128 [::]:22 [::]:*
LISTEN 0 511 [::]:80 [::]:*
LISTEN 0 511 [::]:443 [::]:*ss mencari proses pemakai soket dengan membaca folder fd setiap proses di bawah /proc. Akun biasa tidak bisa membuka folder fd milik proses yang dijalankan akun lain, sehingga nama program itu tidak masuk ke kolom. Jika folder proses 1 yang dijalankan root dibuka dari akun biasa, muncul galat izin.
ls /proc/1/fdls: cannot open directory '/proc/1/fd': Permission deniedProgram yang dijalankan dengan akun Anda sendiri tetap muncul di kolom Process meskipun dari akun biasa. Hal ini dipastikan dengan menjalankan server web sederhana python3 di port 8000 pada 127.0.0.1.
python3 -m http.server 8000 --bind 127.0.0.1 &Setelah dijalankan, tambahkan [sport = :8000] untuk menampilkan baris port 8000 saja.
ss -tlnp sport = :8000State Recv-Q Send-Q Local Address:Port Peer Address:PortProcess
LISTEN 0 5 127.0.0.1:8000 0.0.0.0:* users:(("python3",pid=343015,fd=3))Di dalam tanda kurung setelah users berturut-turut tercantum nama program, pid, dan nomor deskriptor berkas (fd).
Setelah selesai memeriksa, matikan server web sederhana itu dengan [kill %1]. Jika setelah itu [ss -tln sport = :8000] dijalankan lagi, hanya baris judul yang tersisa dan baris port 8000 tidak muncul.
Jika dijalankan dari akun root, informasi semua proses bisa dibaca sehingga kolom Process terisi. Jika beberapa proses mendengarkan bersama di satu port, di dalam tanda kurung users muncul satu entri untuk masing-masing proses. Nama program dan pid pada output root di bawah adalah nilai contoh.
ss -tlnp sport = :443State Recv-Q Send-Q Local Address:Port Peer Address:PortProcess
LISTEN 0 511 0.0.0.0:443 0.0.0.0:* users:(("app",pid=2101,fd=6),("app",pid=2100,fd=6))
LISTEN 0 511 [::]:443 [::]:* users:(("app",pid=2101,fd=7),("app",pid=2100,fd=7))Untuk mencari program dari nomor port, Anda juga bisa memakai perintah lsof dalam bentuk [lsof -i :443].
Perbedaan kolom Process menurut akun bisa Anda bandingkan di diagram di bawah dengan berganti akun.
4️⃣ Opsi filter status dan port pada ss
Setelah memeriksa port yang terbuka pun, siapa yang sedang terhubung ke port itu sekarang harus disaring tersendiri. ss hanya menyisakan baris yang Anda inginkan jika kondisi filter ditambahkan setelah opsi.
Jika nama status ditulis setelah state, hanya soket dengan status itu yang tersisa. Output [ss -tn state established] tidak memiliki kolom State dan dimulai dari kolom Recv-Q.
ss -tn state establishedRecv-Q Send-Q Local Address:Port Peer Address:Port Process
0 0 203.0.113.10:22 198.51.100.7:51114
0 0 203.0.113.10:26676 192.0.2.15:443
0 0 203.0.113.10:29714 192.0.2.16:443Port disaring dengan dport (port pihak lawan) dan sport (port di sisi Anda). Koneksi keluar dari server ke server https di luar dipilih dengan [dport = :443].
ss -tn dport = :443State Recv-Q Send-Q Local Address:Port Peer Address:PortProcess
ESTAB 0 0 203.0.113.10:26676 192.0.2.15:443
ESTAB 0 0 203.0.113.10:29714 192.0.2.16:443Jika sport dipakai bersama -l, Anda hanya memeriksa apakah port itu sedang mendengarkan.
ss -tln sport = :22State Recv-Q Send-Q Local Address:Port Peer Address:PortProcess
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
LISTEN 0 128 [::]:22 [::]:*Beberapa kondisi dikelompokkan dengan tanda kurung dan or, lalu dibungkus tanda kutip tunggal agar shell tidak membaca tanda kurung lebih dulu. Di bawah ini hasil memilih koneksi ssh saja mengikuti contoh di halaman man.
ss -tn state established '( dport = :ssh or sport = :ssh )'Recv-Q Send-Q Local Address:Port Peer Address:Port Process
0 0 203.0.113.10:22 198.51.100.7:51114TIME-WAIT adalah status yang tersisa sebentar setelah koneksi terputus. Status ini tidak muncul di output bawaan, jadi baru terlihat jika dipilih tersendiri dengan [state time-wait].
ss -tn state time-waitRecv-Q Send-Q Local Address:Port Peer Address:PortProcess
0 0 127.0.0.1:28750 127.0.0.1:80
0 0 127.0.0.1:57698 127.0.0.1:8080
0 0 [::1]:31936 [::1]:80Jika nama status salah ditulis, perintah langsung berhenti dengan hanya menyisakan satu baris galat [wrong state name]. Di bawah ini hasil memasukkan foo dengan sengaja. Nama yang bisa dipakai tercantum di baris TCP-STATES pada output [ss -h].
ss -tn state fooss: wrong state name: foo📌 Opsi utama: hasil dari artikel ini
| Opsi | Fungsi | Hasil di artikel ini | |
|---|---|---|---|
| -t | Menampilkan soket TCP saja | Soket Unix hilang, dan di posisi port muncul nama layanan seperti ssh dan https | |
| -n | Menampilkan nomor port, bukan nama layanan | Di ss -tn, ssh tampil sebagai 22 dan https sebagai 443 | |
| -l | Menampilkan soket yang mendengarkan (LISTEN) saja | ss -tln menampilkan port yang mendengarkan seperti 22, 80, dan 443 | |
| -u | Menampilkan soket UDP saja | Kolom status ss -uln semuanya UNCONN | |
| -p | Menampilkan program pemakai soket di kolom Process | Di akun biasa, hanya python3 yang dijalankan akun saya yang tampil nama dan pid-nya; program akun lain kosong | |
| -s | Meringkas jumlah per jenis, bukan menampilkan daftar soket | estab 9 di baris TCP sama dengan 9 baris output state established tanpa baris judul | |
| -4 | Menampilkan soket IPv4 saja | Di ss -t4ln, baris yang diawali [::] hilang | |
| -6 | Menampilkan soket IPv6 saja | Di ss -t6ln, baris yang diawali 0.0.0.0 dan 127.0.0.1 hilang | |
| -H | Menampilkan baris soket saja tanpa baris judul | Jumlah baris ss -H -tln | wc -l tidak menghitung baris judul | |
| state STATUS | Hanya menyisakan soket dengan status itu | Output state established dimulai dari Recv-Q tanpa kolom State; nama yang tidak ada menghasilkan [wrong state name: foo] | |
| dport = :PORT | Menyaring menurut port pihak lawan | dport = :443 menampilkan dua baris koneksi keluar ke server https di luar | |
| sport = :PORT | Menyaring menurut port di sisi Anda | sport = :22 bersama -l menampilkan dua baris port 22 yang mendengarkan, IPv4 dan IPv6 | |
| src ALAMAT | Hanya menyisakan soket di alamat itu | ss -tln src 127.0.0.1 hanya menampilkan port di 127.0.0.1 yang menerima koneksi dari dalam server saja |
📎 Opsi lainnya: menurut manual resmi
| Opsi | Fungsi | |
|---|---|---|
| -a, --all | Menampilkan soket yang mendengarkan dan yang terhubung sekaligus | |
| -r, --resolve | Menerjemahkan alamat dan nomor port menjadi nama | |
| -e, --extended | Menampilkan informasi rinci tiap soket seperti uid dan inode | |
| -o, --options | Menampilkan informasi timer seperti pengiriman ulang TCP dan keepalive | |
| -m, --memory | Menampilkan memori yang dipakai tiap soket | |
| -i, --info | Menampilkan informasi internal TCP (rtt, cwnd, dan lain-lain) | |
| -x, --unix | Menampilkan soket domain Unix saja | |
| -w, --raw | Menampilkan soket RAW saja | |
| -f KELUARGA | Memilih menurut keluarga soket seperti unix, inet, inet6, link, atau netlink | |
| -Q, --no-queues | Menampilkan output tanpa kolom Recv-Q dan Send-Q | |
| -K, --kill | Menutup paksa soket yang cocok dengan filter; soket yang tidak didukung kernel dilewati | |
| -E, --events | Terus menampilkan soket yang ditutup | |
| -V, --version | Menampilkan informasi versi |
🔲 Simulator perintah ss
Di simulator di bawah, Anda bisa mengetik sendiri opsi dan filter yang sudah dibahas lalu membandingkan output-nya dengan [netstat -tln].
5️⃣ Ringkasan soket ss (-s)
-s menampilkan ringkasan jumlah per jenis, bukan daftar soket. Menurut halaman man, angka itu tidak dihitung satu per satu dari daftar, tetapi dikumpulkan dari berbagai data statistik.
ss -sTotal: 340
TCP: 48 (estab 9, closed 15, orphaned 0, timewait 13)
Transport Total IP IPv6
RAW 0 0 0
UDP 8 4 4
TCP 33 25 8
INET 41 29 12
FRAG 0 0 0estab di baris TCP adalah jumlah koneksi yang sedang terjalin. Karena itu, angkanya bisa dicocokkan dengan jumlah baris yang ditampilkan [state established] pada saat yang sama.
ss -tn state established | wc -l10Jika satu baris judul dikurangi dari 10 baris output, tersisa 9 baris, sama dengan estab 9 pada -s. timewait 13 adalah jumlah soket TIME-WAIT yang baru terlihat jika dipilih dengan [state time-wait].
6️⃣ Perintah ss dibandingkan dengan netstat
netstat termasuk dalam paket net-tools, yang halaman man-nya menyebut netstat sebagai program yang hampir tidak dipakai lagi (mostly obsolete) dan menyarankan ss sebagai gantinya. Namun, skrip yang dibuat untuk format output netstat tidak bisa langsung membaca output ss karena urutan kolom dan penulisan alamatnya berbeda.
Saat port TCP yang sedang mendengarkan di server yang sama ditampilkan dengan kedua perintah, netstat menaruh status di paling akhir dan menulis alamat IPv6 seperti :::22.
netstat -tlnActive Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:8080 0.0.0.0:* LISTEN
tcp6 0 0 :::22 :::* LISTEN
tcp6 0 0 :::80 :::* LISTEN
tcp6 0 0 :::443 :::* LISTENPada ss, status ada di paling depan dan alamat IPv6 dibungkus kurung siku seperti [::]:22.
ss -tlnState Recv-Q Send-Q Local Address:Port Peer Address:PortProcess
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
LISTEN 0 511 0.0.0.0:80 0.0.0.0:*
LISTEN 0 511 0.0.0.0:443 0.0.0.0:*
LISTEN 0 511 127.0.0.1:8080 0.0.0.0:*
LISTEN 0 128 [::]:22 [::]:*
LISTEN 0 511 [::]:80 [::]:*
LISTEN 0 511 [::]:443 [::]:*Opsi netstat yang sering dipakai, jika dipindahkan ke perintah ss dan ip, menjadi seperti berikut.
| netstat | Perintah pengganti / yang ditampilkan |
|---|---|
| netstat -tln | ss -tlnPort TCP yang mendengarkan, dalam bentuk nomor |
| netstat -tulpn | ss -tulpnPort TCP dan UDP yang mendengarkan beserta programnya |
| netstat -tan | ss -tanSemua soket TCP, dalam bentuk nomor |
| netstat -r | ip routeTabel routing |
| netstat -i | ip -s linkStatistik antarmuka jaringan |
🔢 FAQ & Konten yang Direkomendasikan











ℹ️ Pemberitahuan Afiliasi
Konten di situs ini berisi tautan afiliasi. Jika pengunjung membeli produk atau layanan melalui tautan tersebut, situs ini menerima komisi dari penjual. Harga yang dibayar pembeli(turun saat ada diskon promo ↓), tidak naik karena hal ini. Harga, diskon, dan informasi stok yang ditampilkan berlaku pada saat penulisan dan bisa berbeda dengan kondisi sebenarnya, jadi pastikan kembali di situs penjual sebelum membeli. Pemilihan dan penilaian produk dibuat berdasarkan standar kami sendiri, dan ada tidaknya komisi tidak memengaruhi urutan maupun isi penilaian.