linux中查看進程端口命令是什么

查看命令有:1、ss命令,可查看進程端口的占用情況,語法“ss -tnlp | grep “端口號””;2、netstat命令,可顯示端口和進程等相關情況,語法“netstat -tnlp | grep “端口號””;3、lsof命令,可查看端口占用情況,語法“lsof -i tcp:端口號”;4、fuser命令,可查看端口占用情況,語法“fuser -v 端口號/tcp”。

linux中查看進程端口命令是什么

本教程操作環境:linux7.3系統、Dell G3電腦。

端口是 linux 系統上特定進程之間邏輯連接的標識,包括物理端口和軟件端口。由于 Linux 操作系統是一個軟件,因此本文只討論軟件端口。軟件端口始終與主機的 IP 地址和相關的通信協議相關聯,因此端口常用于區分應用程序。大部分涉及到網絡的服務都必須打開一個套接字來監聽傳入的網絡請求,而每個服務都使用一個獨立的套接字。

套接字是和 IP 地址、軟件端口和協議結合起來使用的,而端口號對傳輸控制協議(TCP)和用戶數據報協議(UDP)協議都適用,TCP 和 UDP 都可以使用 0 到 65535 之間的端口號進行通信。

以下是端口分配類別:?

  • ?0 – 1023: 常用端口和系統端口?

  • ?1024 – 49151: 軟件的注冊端口?

  • ?49152 – 65535: 動態端口或私有端口

可以使用以下六種方法查看進程的端口信息

  • ss:可以用于轉儲套接字統計信息。

  • netstat:可以顯示打開的套接字列表。

  • lsof:可以列出打開的文件。

  • fuser:可以列出那些打開了文件的進程的進程 ID。

  • nmap:是網絡檢測工具和端口掃描程序。

  • systemctl:是 systemd 系統的控制管理器和服務管理器。

以下我們將找出 sshd 守護進程所使用的端口號。

方法 1:使用 ss 命令?

?ss 一般用于轉儲套接字統計信息。它能夠輸出類似于 netstat 輸出的信息,但它可以比其它工具顯示更多的 TCP 信息和狀態信息。

它還可以顯示所有類型的套接字統計信息,包括 PACKET、TCP、UDP、DCCP、RAW、Unix 域等。

#?ss?-tnlp?|?grep?ssh

linux中查看進程端口命令是什么

也可以使用端口號來檢查。

#?ss?-tnlp?|?grep?":22"

linux中查看進程端口命令是什么

方法 2:使用 netstat 命令

netstat 能夠顯示網絡連接、路由表、接口統計信息、偽裝連接以及多播成員。

默認情況下,netstat 會列出打開的套接字。如果不指定任何地址族,則會顯示所有已配置地址族的活動套接字。但 netstat 已經過時了,一般會使用 ss 來替代。

#?netstat?-tnlp?|?grep?ssh

linux中查看進程端口命令是什么

也可以使用端口號來檢查。

#?netstat?-tnlp?|?grep?":22"

linux中查看進程端口命令是什么

方法 3:使用 lsof 命令

lsof 能夠列出打開的文件,并列出系統上被進程打開的文件的相關信息。

#?lsof?-i?-P?|?grep?ssh

linux中查看進程端口命令是什么

也可以使用端口號來檢查。

#?lsof?-i?tcp:22 COMMAND?PID?USER?FD?TYPE?DEVICE?SIZE/OFF?NODE?NAME sshd?1208?root?3u?IPv4?20919?0t0?TCP?*:ssh?(LISTEN) sshd?1208?root?4u?IPv6?20921?0t0?TCP?*:ssh?(LISTEN) sshd?11592?root?3u?IPv4?27744?0t0?TCP?vps.2daygeek.com:ssh->103.5.134.167:49902?(ESTABLISHED)

方法 4:使用 fuser 命令

fuser 工具會將本地系統上打開了文件的進程的進程 ID 顯示在標準輸出中。

#?fuser?-v?22/tcp

linux中查看進程端口命令是什么

方法 5:使用 nmap 命令

nmap(“Network Mapper”)是一款用于網絡檢測和安全審計的開源工具。它最初用于對大型網絡進行快速掃描,但它對于單個主機的掃描也有很好的表現。

nmap 使用原始 IP 數據包來確定網絡上可用的主機,這些主機的服務(包括應用程序名稱和版本)、主機運行的操作系統(包括操作系統版本等信息)、正在使用的數據包過濾器或防火墻的類型,以及很多其它信息。

#?nmap?-sV?-p?22?localhost

linux中查看進程端口命令是什么

方法 6:使用 systemctl 命令

systemctl 是 systemd 系統的控制管理器和服務管理器。它取代了舊的 SysV 初始化系統管理,目前大多數現代 Linux 操作系統都采用了 systemd。

#?systemctl?status?sshd ●?sshd.service?-?OpenSSH?server?daemon ?Loaded:?loaded?(/usr/lib/systemd/system/sshd.service;?enabled;?vendor?preset:?enabled) ?Active:?active?(running)?since?Sun?2018-09-23?02:08:56?EDT;?6h?11min?ago ?Docs:?man:sshd(8) ?man:sshd_config(5) ?Main?PID:?11584?(sshd) ?CGroup:?/system.slice/sshd.service ?└─11584?/usr/sbin/sshd?-D  Sep?23?02:08:56?vps.2daygeek.com?systemd[1]:?Starting?OpenSSH?server?daemon... Sep?23?02:08:56?vps.2daygeek.com?sshd[11584]:?Server?listening?on?0.0.0.0?port?22. Sep?23?02:08:56?vps.2daygeek.com?sshd[11584]:?Server?listening?on?::?port?22. Sep?23?02:08:56?vps.2daygeek.com?systemd[1]:?Started?OpenSSH?server?daemon. Sep?23?02:09:15?vps.2daygeek.com?sshd[11589]:?Connection?closed?by?103.5.134.167?port?49899?[preauth] Sep?23?02:09:41?vps.2daygeek.com?sshd[11592]:?Accepted?password?for?root?from?103.5.134.167?port?49902?ssh2

以上輸出的內容顯示了最近一次啟動 sshd 服務時 ssh 服務的監聽端口。但它不會將最新日志更新到輸出中。

#?systemctl?status?sshd ●?sshd.service?-?OpenSSH?server?daemon ?Loaded:?loaded?(/usr/lib/systemd/system/sshd.service;?enabled;?vendor?preset:?enabled) ?Active:?active?(running)?since?Thu?2018-09-06?07:40:59?IST;?2?weeks?3?days?ago ?Docs:?man:sshd(8) ?man:sshd_config(5) ?Main?PID:?1208?(sshd) ?CGroup:?/system.slice/sshd.service ?├─?1208?/usr/sbin/sshd?-D ?├─23951?sshd:?[accepted] ?└─23952?sshd:?[net]  Sep?23?12:50:36?vps.2daygeek.com?sshd[23909]:?Invalid?user?pi?from?95.210.113.142?port?51666 Sep?23?12:50:36?vps.2daygeek.com?sshd[23909]:?input_userauth_request:?invalid?user?pi?[preauth] Sep?23?12:50:37?vps.2daygeek.com?sshd[23911]:?pam_unix(sshd:auth):?check?pass;?user?unknown Sep?23?12:50:37?vps.2daygeek.com?sshd[23911]:?pam_unix(sshd:auth):?authentication?failure;?logname=?uid=0?euid=0?tty=ssh?ruser=?rhost=95.210.113.142 Sep?23?12:50:37?vps.2daygeek.com?sshd[23909]:?pam_unix(sshd:auth):?check?pass;?user?unknown Sep?23?12:50:37?vps.2daygeek.com?sshd[23909]:?pam_unix(sshd:auth):?authentication?failure;?logname=?uid=0?euid=0?tty=ssh?ruser=?rhost=95.210.113.142 Sep?23?12:50:39?vps.2daygeek.com?sshd[23911]:?Failed?password?for?invalid?user?pi?from?95.210.113.142?port?51670?ssh2 Sep?23?12:50:39?vps.2daygeek.com?sshd[23909]:?Failed?password?for?invalid?user?pi?from?95.210.113.142?port?51666?ssh2 Sep?23?12:50:40?vps.2daygeek.com?sshd[23911]:?Connection?closed?by?95.210.113.142?port?51670?[preauth] Sep?23?12:50:40?vps.2daygeek.com?sshd[23909]:?Connection?closed?by?95.210.113.142?port?51666?[preauth]

大部分情況下,以上的輸出不會顯示進程的實際端口號。這時更建議使用以下這個 journalctl 命令檢查日志文件中的詳細信息。

#?journalctl?|?grep?-i?"openssh|sshd"

linux中查看進程端口命令是什么

相關推薦:《Linux視頻教程

以上就是

? 版權聲明
THE END
喜歡就支持一下吧
點贊12 分享