当前位置: 首页 > 科技观察

Linux中如何查看进程占用的端口号_0

时间:2023-03-22 17:08:07 科技观察

对于Linux系统管理员来说,了解一个服务是否正确绑定或监听了一个端口是非常重要的。如果您需要处理与端口相关的问题,这篇文章可能对您有用。端口是Linux系统上特定进程之间逻辑连接的标识,包括物理端口和软件端口。由于Linux操作系统是一个软件,本文只讨论软件端口。软件端口总是与主机的IP地址和关联的通信协议相关联,因此端口通常用于区分应用程序。大多数涉及网络的服务都必须打开一个套接字来侦听传入的网络请求,并且每个服务都使用一个单独的套接字。套接字与IP地址、软件端口和协议结合使用,端口号适用于传输控制协议(TCP)和用户数据报协议(UDP)协议,TCP和UDP都可以在0之间使用和65535端口号进行通信。以下是端口分配类别:0-1023:常用端口和系统端口1024-49151:软件注册端口49152-65535:动态端口或私有端口您可以在/etc/services文件中查看有关保留端口的更多信息Linux信息。#less/etc/services#/etc/services:#$Id:services,v1.552013/04/14ovasikExp$##网络服务,互联网风格#IANA服务版本:最后更新于2013-04-10##注意目前IANA的政策是为TCP和UDP分配一个众所周知的端口号;因此,这里的大多数条目都有两个条目#,即使该协议不支持UDP操作。#从RFC1700更新,``AssignedNumbers''(1994年10月)。并非所有端口都包括在内,仅包括更常见的端口。##最新的IANA端口分配可以从#http://www.iana.org/assignments/port-numbers获得#众所周知的端口是从0到1023.#注册端口是从1024到49151的端口#动态和/或专用端口是从49152到65535的端口##每行描述一个服务,格式为:##service-nameport/protocol[aliases...][#comment]tcpmux1/tcp#TCP端口服务multiplexertcpmux1/udp#TCP端口服务multiplexerrje5/tcp#远程作业入口rje5/udp#远程作业入口echo7/tcpecho7/udpdiscard9/tcpsinknulldiscard9/udpsinknullsystat11/tcpuserssystat11/udpusersdaytime13/tcpdaytime13/udpqotd17/otdqquo/udpquotemsp18/tcp#消息发送协议(历史)msp18/udp#消息发送协议(历史)chargen19/tcpttytstsourcechargen19/udpttytstsourceftp-data20/tcpftp-data20/udp#21注册到ftp,但也被fspftp21/tcpftp21/udp使用fspfspdssh22/tcp#TheSecureShell(SSH)Protocolssh22/udp#TheSecureShell(SSH)Protocoltelnet23/tcptelnet23/udp#24-私有邮件系统lmtp24/tcp#LMTPMailDeliverylmtp24/udp#LMTPMailDelivery可以使用以下六种方法查看端口信息ss:可以用来dumpsocketstatistics。netstat:可以显示打开的套接字列表。lsof:可以列出打开的文件。fuser:可以列出那些打开了文件的进程的进程ID。nmap:是一个网络检测工具和端口扫描器。systemctl:是systemd系统的控制管理器和服务管理器。下面我们将找出sshd守护进程使用的端口号。方法一:使用ss命令ss一般用于dumpsocketstatistics。它可以输出类似于netstat输出的信息,但比其他工具能显示更多的TCP信息和状态信息。它还可以显示所有类型的套接字统计信息,包括PACKET、TCP、UDP、DCCP、RAW、Unix域等。#ss-tnlp|grepsshLISTEN0128*:22*:*用户:(("sshd",pid=997,fd=3))LISTEN0128:::22:::*用户:(("sshd",pid=997,fd=4))也可以使用端口号进行检查。#ss-tnlp|grep":22"LISTEN0128*:22*:*users:(("sshd",pid=997,fd=3))LISTEN0128::::22::::*users:(("sshd",pid=997,fd=4))方法二:使用netstat命令netstat可以显示网络连接、路由表、接口统计、伪装连接、组播成员等。默认情况下,netstat列出打开的套接字。如果未指定地址族,则显示所有已配置地址族的活动套接字。但是netstat已经过时了,一般用ss代替。#网络统计-tnlp|grepsshtcp000.0.0.0:220.0.0.0:*LISTEN997/sshdtcp600:::22:::*LISTEN997/sshd也可以使用端口号进行检查。#网络统计-tnlp|grep":22"tcp000.0.0.0:220.0.0.0:*LISTEN1208/sshdtcp600:::22:::*LISTEN1208/sshd方法三:使用lsof命令lsof可以list打印打开的文件和列表有关系统上进程打开的文件的信息。#lsof-i-P|grepsshCOMMANDPIDUSERFDTYPEDEVICESIZE/OFFNODENAMEsshd11584root3uIPv4276250t0TCP*:22(LISTEN)sshd11584root4uIPv6276270t0TCP*:22(LISTEN)ssh2udroot11IPv4277440t0TCPvps.2daygeekcom:ssh->103.5.134.167:49902(ESTABLISHED)也可以使用端口号进行检查。#lsof-itcp:22COMMANDPIDUSERFDTYPEDEVICESIZE/OFF节点名称sshd1208root3uIPv4209190t0TCP*:ssh(LISTEN)sshd1208root4uIPv6209210t0TCP*:ssh(LISTEN)sshd115744root30t0TCPvps.2daygeek.com:ssh->103.5.134.167:49902(ESTABLISHED)方法4:使用fuser命令fuser工具会将本地系统上打开文件的进程的进程ID打印到标准输出。#fuser-v22/tcpUSERPIDACCESSCOMMAND22/tcp:root1208F....sshdroot12388F....sshdroot49339F....sshd方法5:使用nmap命令nmap("NetworkMapper")是一个用于网络检测和安全审计的开源工具。它最初用于大型网络的快速扫描,但它也适用于单个主机扫描。nmap使用原始IP数据包来确定网络上可用的主机、这些主机的服务(包括应用程序名称和版本)、主机运行的操作系统(包括OS版本等信息)以及数据包过滤器或防火墙使用类型,以及许多其他信息。#nmap-sV-p22localhostStartingNmap6.40(http://nmap.org)at2018-09-2312:36ISTNmapscanreportforlocalhost(127.0.0.1)Hostisup(0.000089slatency).Otheraddressesforlocalhost(未扫描):127.0.0.1PORTSTATESERVICEVERSION22/tcpopensshOpenSSH7.4(协议2.0)执行服务检测。请在http://nmap.org/submit/报告任何不正确的结果。Nmapdone:1IPaddress(1hostup)scannedin0.44seconds方法六:使用systemctl命令systemctl是systemd系统的控制管理器和服务管理器.它取代了旧的SysVinit系统管理,目前被大多数现代Linux操作系统systemd采用。推荐阅读:chkservice——Linux终端上的systemd单元管理工具;启用;供应商预设:已启用)活动:自Sun2018-09-2302:08:56EDT以来活动(运行);6小时11分钟前文档:man:sshd(8)man:sshd_config(5)MainPID:11584(sshd)CGroup:/system.slice/sshd.service└─11584/usr/sbin/sshd-DSep2302:08:56vps.2daygeek.comsystemd[1]:启动OpenSSH服务器守护程序...9月23日02:08:56vps.2daygeek.comsshd[11584]:服务器侦听0.0.0.0端口22.Sep2302:08:56vps.2daygeek.comsshd[11584]:服务器侦听::端口22.Sep2302:08:56vps.2daygeek.comsystemd[1]:启动OpenSSH服务器守护进程。Sep2302:09:15vps。2daygeek.comsshd[11589]:连接由103.5.134.167端口49899[preauth]Sep2302:09:41vps.2daygeek.comsshd[11592]:从103.5.134.167端口49902ssh2接受的root密码以上输出显示最新的ssh启动d服务时ssh服务的监听端口,但不更新最新日志到输出。#systemctlstatussshd●sshd.service-OpenSSH服务器守护进程已加载:已加载(/usr/lib/systemd/system/sshd.service;已启用;供应商预设:已启用)活动:活动(运行)自周四2018-09-0607:40:59美国标准时间;2周3天前Docs:man:sshd(8)man:sshd_config(5)MainPID:1208(sshd)CGroup:/system.slice/sshd.service├─1208/usr/sbin/sshd-D├─23951sshd:[accepted]└─23952sshd:[net]Sep2312:50:36vps.2daygeek.comsshd[23909]:来自95.210.113.142端口51666Sep2312:50:36vps.2daygeek.com的无效用户pisshd[23909]:input_userauth_request:invaliduserpi[preauth]Sep2312:50:37vps.2daygeek.comsshd[23911]:pam_unix(sshd:auth):检查通过;用户unknownSep2312:50:37vps.2daygeek.comsshd[23911]:pam_unix(sshd:auth):身份验证失败;logname=uid=0euid=0tty=sshruser=rhost=95.210.113.142Sep2312:50:37vps.2daygeek.comsshd[23909]:pam_unix(sshd:auth):检查通过;用户unknownSep2312:50:37vps.2daygeek.comsshd[23909]:pam_unix(sshd:auth):身份验证失败;logname=uid=0euid=0tty=sshruser=rhost=95.210.113.142Sep2312:50:39vps.2daygeek.comsshd[23911]:来自95.210.113.142端口51670ssh2Sep2312的无效用户pi的密码失败:50:39vps.2daygeek.comsshd[23909]:来自95.210.113.142端口51666ssh2Sep23的无效用户pi密码失败12:50:40vps.2daygeek[vcom.sshdek[23909]23911]:连接被95.210关闭.113.142port51670[preauth]Sep2312:50:40vps.2daygeek.comsshd[23909]:Connectionclosedby95.210.113.142port51666[preauth]在大多数情况下,以上输出进程的实际端口号将不被显示。这种情况下,更推荐使用下面的journalctl命令查看日志文件中的详细信息。#journalctl|grep-i"openssh\|sshd"Sep2302:08:56vps138235.vps.ovh.casshd[997]:收到信号15;终止。9月23日02:08:56vps138235.vps.ovh.casystemd[1]:停止OpenSSH服务器守护程序...9月23日02:08:56vps138235.vps.ovh.casystemd[1]:启动OpenSSH服务器守护进程...Sep2302:08:56vps138235.vps.ovh.casshd[11584]:服务器侦听0.0.0.0端口22.Sep2302:08:56vps138235.vps.ovh.casshd[11584]:服务器侦听::端口22.Sep2302:08:56vps138235.vps.ovh.casystemd[1]:已启动OpenSSH服务器守护程序。