Perintah ss: memeriksa port dan proses di Linux, dibandingkan dengan netstat

Lingkungan ujiKeluarga DebianDebian 12iproute2 6.1.0akun pengguna biasaDiperiksa 2026-11-04
Perintah JaringanssLokasi/usr/bin/ss

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 5
Netid 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              * 46066199

Karena 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 -t
State 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:https

Jika Anda menambahkan -n juga, nomor port tampil apa adanya tanpa diubah menjadi nama layanan.

ss -tn
State 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:443

Kolom 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 -tln
State  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 -tl
State  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 -uln
State  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 -tulpn
Netid 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 -tlnp
State  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/fd
ls: cannot open directory '/proc/1/fd': Permission denied

Program 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 = :8000
State  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 = :443
State  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.

🧭 ss -p dan akun: kapan kolom Process terisi
Diagram penjelasan
👤 Akun
$# ss -tlnp
Soket yang mendengarkanInformasi prosesKolom Process
0.0.0.0:22LISTEN
➜
/proc/812/fdPemilik: root
➜
Proses akun lain: tidak terbacaroot: membaca semua prosesKolom Process kosongusers:(("sshd",pid=812,fd=3))
127.0.0.1:8080LISTEN
➜
/proc/2100/fdPemilik: root
➜
Proses akun lain: tidak terbacaroot: membaca semua prosesKolom Process kosongusers:(("app",pid=2100,fd=3))
127.0.0.1:8000LISTEN
➜
/proc/343015/fdPemilik: user
➜
Proses akun saya: terbacaroot: membaca semua prosesusers:(("python3",pid=343015,fd=3))
Akun biasa tidak bisa membaca informasi /proc milik proses yang dijalankan akun lain, sehingga kolom Process pada baris itu kosong dan hanya baris python3 yang dijalankan dengan akun Anda sendiri yang terisi.
root bisa membaca informasi semua proses, sehingga nama program dan pid setiap soket yang mendengarkan tampil di kolom Process.

4️⃣ Opsi filter status dan port pada ss

  • ↪️ state, dport, sport

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 established
Recv-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:443

Port 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 = :443
State 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:443

Jika sport dipakai bersama -l, Anda hanya memeriksa apakah port itu sedang mendengarkan.

ss -tln sport = :22
State  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:51114

TIME-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-wait
Recv-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]:80

Jika 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 foo
ss: wrong state name: foo

📌 Opsi utama: hasil dari artikel ini

OpsiFungsiHasil di artikel ini
-tMenampilkan soket TCP sajaSoket Unix hilang, dan di posisi port muncul nama layanan seperti ssh dan https
-nMenampilkan nomor port, bukan nama layananDi ss -tn, ssh tampil sebagai 22 dan https sebagai 443
-lMenampilkan soket yang mendengarkan (LISTEN) sajass -tln menampilkan port yang mendengarkan seperti 22, 80, dan 443
-uMenampilkan soket UDP sajaKolom status ss -uln semuanya UNCONN
-pMenampilkan program pemakai soket di kolom ProcessDi akun biasa, hanya python3 yang dijalankan akun saya yang tampil nama dan pid-nya; program akun lain kosong
-sMeringkas jumlah per jenis, bukan menampilkan daftar soketestab 9 di baris TCP sama dengan 9 baris output state established tanpa baris judul
-4Menampilkan soket IPv4 sajaDi ss -t4ln, baris yang diawali [::] hilang
-6Menampilkan soket IPv6 sajaDi ss -t6ln, baris yang diawali 0.0.0.0 dan 127.0.0.1 hilang
-HMenampilkan baris soket saja tanpa baris judulJumlah baris ss -H -tln | wc -l tidak menghitung baris judul
state STATUSHanya menyisakan soket dengan status ituOutput state established dimulai dari Recv-Q tanpa kolom State; nama yang tidak ada menghasilkan [wrong state name: foo]
dport = :PORTMenyaring menurut port pihak lawandport = :443 menampilkan dua baris koneksi keluar ke server https di luar
sport = :PORTMenyaring menurut port di sisi Andasport = :22 bersama -l menampilkan dua baris port 22 yang mendengarkan, IPv4 dan IPv6
src ALAMATHanya menyisakan soket di alamat ituss -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

OpsiFungsi
-a, --allMenampilkan soket yang mendengarkan dan yang terhubung sekaligus
-r, --resolveMenerjemahkan alamat dan nomor port menjadi nama
-e, --extendedMenampilkan informasi rinci tiap soket seperti uid dan inode
-o, --optionsMenampilkan informasi timer seperti pengiriman ulang TCP dan keepalive
-m, --memoryMenampilkan memori yang dipakai tiap soket
-i, --infoMenampilkan informasi internal TCP (rtt, cwnd, dan lain-lain)
-x, --unixMenampilkan soket domain Unix saja
-w, --rawMenampilkan soket RAW saja
-f KELUARGAMemilih menurut keluarga soket seperti unix, inet, inet6, link, atau netlink
-Q, --no-queuesMenampilkan output tanpa kolom Recv-Q dan Send-Q
-K, --killMenutup paksa soket yang cocok dengan filter; soket yang tidak didukung kernel dilewati
-E, --eventsTerus menampilkan soket yang ditutup
-V, --versionMenampilkan 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].

Simulator perintah ssiproute2 6.1.0
[root@server work]#
Ini layar akun biasa (user) yang hanya berjalan di dalam browser; tombol ↑↓ memanggil kembali perintah yang diketik sebelumnya.

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 -s
Total: 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         0

estab 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 -l
10

Jika 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 -tln
Active 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                  :::*                    LISTEN

Pada ss, status ada di paling depan dan alamat IPv6 dibungkus kurung siku seperti [::]:22.

ss -tln
State  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.

netstatPerintah pengganti / yang ditampilkan
netstat -tlnss -tlnPort TCP yang mendengarkan, dalam bentuk nomor
netstat -tulpnss -tulpnPort TCP dan UDP yang mendengarkan beserta programnya
netstat -tanss -tanSemua soket TCP, dalam bentuk nomor
netstat -rip routeTabel routing
netstat -iip -s linkStatistik antarmuka jaringan
Perintah ip yang menggantikan netstat -r dan netstat -i tercantum di bagian NOTES halaman man netstat(8) milik net-tools.

🔢 FAQ & Konten yang Direkomendasikan

Dengan -4 hanya soket IPv4 yang tersisa, dan dengan -6 hanya soket IPv6. Di [ss -t4ln], baris yang diawali [::] hilang, dan di [ss -t6ln], baris yang diawali 0.0.0.0 dan 127.0.0.1 hilang.

Jika alamat ditulis setelah src, hanya soket yang mendengarkan di alamat itu yang tersisa. [ss -tln src 127.0.0.1] hanya menampilkan port di 127.0.0.1 yang tidak bisa dijangkau dari luar server.

Dengan -H, hanya baris soket yang tampil tanpa baris judul. Saat menghitung baris seperti [ss -H -tln | wc -l], baris judul tidak ikut terhitung.

🧭 Konten perintah jaringan yang direkomendasikan 13 artikel · 3 referensi
🗂️ Perintah jaringan
📄 Perintah ip 📄 Perintah netstat · ifconfig 📄 Perintah nmtui 📄 Perintah ss
📄 Perintah SSH 📄 Perintah rsync 📄 Perintah wget 📄 Perintah rz · sz
📄 Perintah host 📄 Perintah nslookup
📄 Perintah iptables 📄 Perintah firewall-cmd 📄 Perintah certbot

ℹ️ 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.

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *

Buktikan bahwa Anda manusia: 7   +   8   =