6种查看Linux进程占用端口号的方法详解
对于Linux系统管理员来说,清楚某个服务是否正确地绑定或监听某个端口,是至关重要的。如果你需要处理端口相关的问题,这篇文章可能会对你有用。
端口是Linux系统上特定进程之间逻辑连接的标识,包括物理端口和软件端口。由于Linux操作系统是一个软件,因此本文只讨论软件端口。软件端口始终与主机的IP地址和相关的通信协议相关联,因此端口常用于区分应用程序。大部分涉及到网络的服务都必须打开一个套接字来监听传入的网络请求,而每个服务都使用一个独立的套接字。
套接字是和IP地址、软件端口和协议结合起来使用的,而端口号对传输控制协议(TCP)和用户数据报协议(UDP)协议都适用,TCP和UDP都可以使用0到65535之间的端口号进行通信。
以下是端口分配类别:
0-1023:常用端口和系统端口
1024-49151:软件的注册端口
49152-65535:动态端口或私有端口
在Linux上的/etc/services文件可以查看到更多关于保留端口的信息。
#less/etc/services #/etc/services: #$Id:services,v1.552013/04/14ovasikExp$ # #Networkservices,Internetstyle #IANAservicesversion:lastupdated2013-04-10 # #NotethatitispresentlythepolicyofIANAtoassignasinglewell-known #portnumberforbothTCPandUDP;hence,mostentriesherehavetwoentries #eveniftheprotocoldoesn'tsupportUDPoperations. #UpdatedfromRFC1700,``AssignedNumbers''(October1994).Notallports #areincluded,onlythemorecommonones. # #ThelatestIANAportassignmentscanbegottenfrom #http://www.iana.org/assignments/port-numbers #TheWellKnownPortsarethosefrom0through1023. #TheRegisteredPortsarethosefrom1024through49151 #TheDynamicand/orPrivatePortsarethosefrom49152through65535 # #Eachlinedescribesoneservice,andisoftheform: # #service-nameport/protocol[aliases...][#comment] tcpmux1/tcp#TCPportservicemultiplexer tcpmux1/udp#TCPportservicemultiplexer rje5/tcp#RemoteJobEntry rje5/udp#RemoteJobEntry echo7/tcp echo7/udp discard9/tcpsinknull discard9/udpsinknull systat11/tcpusers systat11/udpusers daytime13/tcp daytime13/udp qotd17/tcpquote qotd17/udpquote msp18/tcp#messagesendprotocol(historic) msp18/udp#messagesendprotocol(historic) chargen19/tcpttytstsource chargen19/udpttytstsource ftp-data20/tcp ftp-data20/udp #21isregisteredtoftp,butalsousedbyfsp ftp21/tcp ftp21/udpfspfspd ssh22/tcp#TheSecureShell(SSH)Protocol ssh22/udp#TheSecureShell(SSH)Protocol telnet23/tcp telnet23/udp #24-privatemailsystem lmtp24/tcp#LMTPMailDelivery lmtp24/udp#LMTPMailDelivery
可以使用以下六种方法查看端口信息。
ss:可以用于转储套接字统计信息。
netstat:可以显示打开的套接字列表。
lsof:可以列出打开的文件。
fuser:可以列出那些打开了文件的进程的进程ID。
nmap:是网络检测工具和端口扫描程序。
systemctl:是systemd系统的控制管理器和服务管理器。
以下我们将找出sshd守护进程所使用的端口号。
方法1:使用ss命令
ss一般用于转储套接字统计信息。它能够输出类似于netstat输出的信息,但它可以比其它工具显示更多的TCP信息和状态信息。
它还可以显示所有类型的套接字统计信息,包括PACKET、TCP、UDP、DCCP、RAW、Unix域等。
#ss-tnlp|grepssh LISTEN0128*:22*:*users:(("sshd",pid=997,fd=3)) LISTEN0128:::22:::*users:(("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))
方法2:使用netstat命令
netstat能够显示网络连接、路由表、接口统计信息、伪装连接以及多播成员。
默认情况下,netstat会列出打开的套接字。如果不指定任何地址族,则会显示所有已配置地址族的活动套接字。但netstat已经过时了,一般会使用ss来替代。
#netstat-tnlp|grepssh tcp000.0.0.0:220.0.0.0:*LISTEN997/sshd tcp600:::22:::*LISTEN997/sshd
也可以使用端口号来检查。
#netstat-tnlp|grep":22" tcp000.0.0.0:220.0.0.0:*LISTEN1208/sshd tcp600:::22:::*LISTEN1208/sshd
方法3:使用lsof命令
lsof能够列出打开的文件,并列出系统上被进程打开的文件的相关信息。
#lsof-i-P|grepssh COMMANDPIDUSERFDTYPEDEVICESIZE/OFFNODENAME sshd11584root3uIPv4276250t0TCP*:22(LISTEN) sshd11584root4uIPv6276270t0TCP*:22(LISTEN) sshd11592root3uIPv4277440t0TCPvps.2daygeek.com:ssh->103.5.134.167:49902(ESTABLISHED)
也可以使用端口号来检查。
#lsof-itcp:22 COMMANDPIDUSERFDTYPEDEVICESIZE/OFFNODENAME sshd1208root3uIPv4209190t0TCP*:ssh(LISTEN) sshd1208root4uIPv6209210t0TCP*:ssh(LISTEN) sshd11592root3uIPv4277440t0TCPvps.2daygeek.com:ssh->103.5.134.167:49902(ESTABLISHED)
方法4:使用fuser命令
fuser工具会将本地系统上打开了文件的进程的进程ID显示在标准输出中。
#fuser-v22/tcp USERPIDACCESSCOMMAND 22/tcp:root1208F....sshd root12388F....sshd root49339F....sshd
方法5:使用nmap命令
nmap(“NetworkMapper”)是一款用于网络检测和安全审计的开源工具。它最初用于对大型网络进行快速扫描,但它对于单个主机的扫描也有很好的表现。
nmap使用原始IP数据包来确定网络上可用的主机,这些主机的服务(包括应用程序名称和版本)、主机运行的操作系统(包括操作系统版本等信息)、正在使用的数据包过滤器或防火墙的类型,以及很多其它信息。
#nmap-sV-p22localhost StartingNmap6.40(http://nmap.org)at2018-09-2312:36IST Nmapscanreportforlocalhost(127.0.0.1) Hostisup(0.000089slatency). Otheraddressesforlocalhost(notscanned):127.0.0.1 PORTSTATESERVICEVERSION 22/tcpopensshOpenSSH7.4(protocol2.0) Servicedetectionperformed.Pleasereportanyincorrectresultsathttp://nmap.org/submit/. Nmapdone:1IPaddress(1hostup)scannedin0.44seconds
方法6:使用systemctl命令
systemctl是systemd系统的控制管理器和服务管理器。它取代了旧的SysV初始化系统管理,目前大多数现代Linux操作系统都采用了systemd。
#systemctlstatussshd ●sshd.service-OpenSSHserverdaemon Loaded:loaded(/usr/lib/systemd/system/sshd.service;enabled;vendorpreset:enabled) Active:active(running)sinceSun2018-09-2302:08:56EDT;6h11minago Docs:man:sshd(8) man:sshd_config(5) MainPID:11584(sshd) CGroup:/system.slice/sshd.service └─11584/usr/sbin/sshd-D Sep2302:08:56vps.2daygeek.comsystemd[1]:StartingOpenSSHserverdaemon... Sep2302:08:56vps.2daygeek.comsshd[11584]:Serverlisteningon0.0.0.0port22. Sep2302:08:56vps.2daygeek.comsshd[11584]:Serverlisteningon::port22. Sep2302:08:56vps.2daygeek.comsystemd[1]:StartedOpenSSHserverdaemon. Sep2302:09:15vps.2daygeek.comsshd[11589]:Connectionclosedby103.5.134.167port49899[preauth] Sep2302:09:41vps.2daygeek.comsshd[11592]:Acceptedpasswordforrootfrom103.5.134.167port49902ssh2
以上输出的内容显示了最近一次启动sshd服务时ssh服务的监听端口。但它不会将最新日志更新到输出中。
#systemctlstatussshd ●sshd.service-OpenSSHserverdaemon Loaded:loaded(/usr/lib/systemd/system/sshd.service;enabled;vendorpreset:enabled) Active:active(running)sinceThu2018-09-0607:40:59IST;2weeks3daysago 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]:Invaliduserpifrom95.210.113.142port51666 Sep2312:50:36vps.2daygeek.comsshd[23909]:input_userauth_request:invaliduserpi[preauth] Sep2312:50:37vps.2daygeek.comsshd[23911]:pam_unix(sshd:auth):checkpass;userunknown Sep2312:50:37vps.2daygeek.comsshd[23911]:pam_unix(sshd:auth):authenticationfailure;logname=uid=0euid=0tty=sshruser=rhost=95.210.113.142 Sep2312:50:37vps.2daygeek.comsshd[23909]:pam_unix(sshd:auth):checkpass;userunknown Sep2312:50:37vps.2daygeek.comsshd[23909]:pam_unix(sshd:auth):authenticationfailure;logname=uid=0euid=0tty=sshruser=rhost=95.210.113.142 Sep2312:50:39vps.2daygeek.comsshd[23911]:Failedpasswordforinvaliduserpifrom95.210.113.142port51670ssh2 Sep2312:50:39vps.2daygeek.comsshd[23909]:Failedpasswordforinvaliduserpifrom95.210.113.142port51666ssh2 Sep2312:50:40vps.2daygeek.comsshd[23911]:Connectionclosedby95.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]:Receivedsignal15;terminating. Sep2302:08:56vps138235.vps.ovh.casystemd[1]:StoppingOpenSSHserverdaemon... Sep2302:08:56vps138235.vps.ovh.casystemd[1]:StartingOpenSSHserverdaemon... Sep2302:08:56vps138235.vps.ovh.casshd[11584]:Serverlisteningon0.0.0.0port22. Sep2302:08:56vps138235.vps.ovh.casshd[11584]:Serverlisteningon::port22. Sep2302:08:56vps138235.vps.ovh.casystemd[1]:StartedOpenSSHserverdaemon.
查看服务器占用端口是我们系统管理员必须掌握的技能,以上查看Linux进程占用端口号的6种方法至少要会其中的一种
对于Linux系统管理员来说,清楚某个服务是否正确地绑定或监听某个端口,是至关重要的。如果你需要处理端口相关的问题,这篇文章可能会对你有用。
端口是Linux系统上特定进程之间逻辑连接的标识,包括物理端口和软件端口。由于Linux操作系统是一个软件,因此本文只讨论软件端口。软件端口始终与主机的IP地址和相关的通信协议相关联,因此端口常用于区分应用程序。大部分涉及到网络的服务都必须打开一个套接字来监听传入的网络请求,而每个服务都使用一个独立的套接字。
套接字是和IP地址、软件端口和协议结合起来使用的,而端口号对传输控制协议(TCP)和用户数据报协议(UDP)协议都适用,TCP和UDP都可以使用0到65535之间的端口号进行通信。
以下是端口分配类别:
0-1023:常用端口和系统端口
1024-49151:软件的注册端口
49152-65535:动态端口或私有端口
在Linux上的/etc/services文件可以查看到更多关于保留端口的信息。
#less/etc/services #/etc/services: #$Id:services,v1.552013/04/14ovasikExp$ # #Networkservices,Internetstyle #IANAservicesversion:lastupdated2013-04-10 # #NotethatitispresentlythepolicyofIANAtoassignasinglewell-known #portnumberforbothTCPandUDP;hence,mostentriesherehavetwoentries #eveniftheprotocoldoesn'tsupportUDPoperations. #UpdatedfromRFC1700,``AssignedNumbers''(October1994).Notallports #areincluded,onlythemorecommonones. # #ThelatestIANAportassignmentscanbegottenfrom #http://www.iana.org/assignments/port-numbers #TheWellKnownPortsarethosefrom0through1023. #TheRegisteredPortsarethosefrom1024through49151 #TheDynamicand/orPrivatePortsarethosefrom49152through65535 # #Eachlinedescribesoneservice,andisoftheform: # #service-nameport/protocol[aliases...][#comment] tcpmux1/tcp#TCPportservicemultiplexer tcpmux1/udp#TCPportservicemultiplexer rje5/tcp#RemoteJobEntry rje5/udp#RemoteJobEntry echo7/tcp echo7/udp discard9/tcpsinknull discard9/udpsinknull systat11/tcpusers systat11/udpusers daytime13/tcp daytime13/udp qotd17/tcpquote qotd17/udpquote msp18/tcp#messagesendprotocol(historic) msp18/udp#messagesendprotocol(historic) chargen19/tcpttytstsource chargen19/udpttytstsource ftp-data20/tcp ftp-data20/udp #21isregisteredtoftp,butalsousedbyfsp ftp21/tcp ftp21/udpfspfspd ssh22/tcp#TheSecureShell(SSH)Protocol ssh22/udp#TheSecureShell(SSH)Protocol telnet23/tcp telnet23/udp #24-privatemailsystem lmtp24/tcp#LMTPMailDelivery lmtp24/udp#LMTPMailDelivery
可以使用以下六种方法查看端口信息。
ss:可以用于转储套接字统计信息。
netstat:可以显示打开的套接字列表。
lsof:可以列出打开的文件。
fuser:可以列出那些打开了文件的进程的进程ID。
nmap:是网络检测工具和端口扫描程序。
systemctl:是systemd系统的控制管理器和服务管理器。
以下我们将找出sshd守护进程所使用的端口号。
方法1:使用ss命令
ss一般用于转储套接字统计信息。它能够输出类似于netstat输出的信息,但它可以比其它工具显示更多的TCP信息和状态信息。
它还可以显示所有类型的套接字统计信息,包括PACKET、TCP、UDP、DCCP、RAW、Unix域等。
#ss-tnlp|grepssh LISTEN0128*:22*:*users:(("sshd",pid=997,fd=3)) LISTEN0128:::22:::*users:(("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))
方法2:使用netstat命令
netstat能够显示网络连接、路由表、接口统计信息、伪装连接以及多播成员。
默认情况下,netstat会列出打开的套接字。如果不指定任何地址族,则会显示所有已配置地址族的活动套接字。但netstat已经过时了,一般会使用ss来替代。
#netstat-tnlp|grepssh tcp000.0.0.0:220.0.0.0:*LISTEN997/sshd tcp600:::22:::*LISTEN997/sshd
也可以使用端口号来检查。
#netstat-tnlp|grep":22" tcp000.0.0.0:220.0.0.0:*LISTEN1208/sshd tcp600:::22:::*LISTEN1208/sshd
方法3:使用lsof命令
lsof能够列出打开的文件,并列出系统上被进程打开的文件的相关信息。
#lsof-i-P|grepssh COMMANDPIDUSERFDTYPEDEVICESIZE/OFFNODENAME sshd11584root3uIPv4276250t0TCP*:22(LISTEN) sshd11584root4uIPv6276270t0TCP*:22(LISTEN) sshd11592root3uIPv4277440t0TCPvps.2daygeek.com:ssh->103.5.134.167:49902(ESTABLISHED)
也可以使用端口号来检查。
#lsof-itcp:22 COMMANDPIDUSERFDTYPEDEVICESIZE/OFFNODENAME sshd1208root3uIPv4209190t0TCP*:ssh(LISTEN) sshd1208root4uIPv6209210t0TCP*:ssh(LISTEN) sshd11592root3uIPv4277440t0TCPvps.2daygeek.com:ssh->103.5.134.167:49902(ESTABLISHED)
方法4:使用fuser命令
fuser工具会将本地系统上打开了文件的进程的进程ID显示在标准输出中。
#fuser-v22/tcp USERPIDACCESSCOMMAND 22/tcp:root1208F....sshd root12388F....sshd root49339F....sshd
方法5:使用nmap命令
nmap(“NetworkMapper”)是一款用于网络检测和安全审计的开源工具。它最初用于对大型网络进行快速扫描,但它对于单个主机的扫描也有很好的表现。
nmap使用原始IP数据包来确定网络上可用的主机,这些主机的服务(包括应用程序名称和版本)、主机运行的操作系统(包括操作系统版本等信息)、正在使用的数据包过滤器或防火墙的类型,以及很多其它信息。
#nmap-sV-p22localhost StartingNmap6.40(http://nmap.org)at2018-09-2312:36IST Nmapscanreportforlocalhost(127.0.0.1) Hostisup(0.000089slatency). Otheraddressesforlocalhost(notscanned):127.0.0.1 PORTSTATESERVICEVERSION 22/tcpopensshOpenSSH7.4(protocol2.0) Servicedetectionperformed.Pleasereportanyincorrectresultsathttp://nmap.org/submit/. Nmapdone:1IPaddress(1hostup)scannedin0.44seconds
方法6:使用systemctl命令
systemctl是systemd系统的控制管理器和服务管理器。它取代了旧的SysV初始化系统管理,目前大多数现代Linux操作系统都采用了systemd。
#systemctlstatussshd ●sshd.service-OpenSSHserverdaemon Loaded:loaded(/usr/lib/systemd/system/sshd.service;enabled;vendorpreset:enabled) Active:active(running)sinceSun2018-09-2302:08:56EDT;6h11minago Docs:man:sshd(8) man:sshd_config(5) MainPID:11584(sshd) CGroup:/system.slice/sshd.service └─11584/usr/sbin/sshd-D Sep2302:08:56vps.2daygeek.comsystemd[1]:StartingOpenSSHserverdaemon... Sep2302:08:56vps.2daygeek.comsshd[11584]:Serverlisteningon0.0.0.0port22. Sep2302:08:56vps.2daygeek.comsshd[11584]:Serverlisteningon::port22. Sep2302:08:56vps.2daygeek.comsystemd[1]:StartedOpenSSHserverdaemon. Sep2302:09:15vps.2daygeek.comsshd[11589]:Connectionclosedby103.5.134.167port49899[preauth] Sep2302:09:41vps.2daygeek.comsshd[11592]:Acceptedpasswordforrootfrom103.5.134.167port49902ssh2
以上输出的内容显示了最近一次启动sshd服务时ssh服务的监听端口。但它不会将最新日志更新到输出中。
#systemctlstatussshd ●sshd.service-OpenSSHserverdaemon Loaded:loaded(/usr/lib/systemd/system/sshd.service;enabled;vendorpreset:enabled) Active:active(running)sinceThu2018-09-0607:40:59IST;2weeks3daysago 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]:Invaliduserpifrom95.210.113.142port51666 Sep2312:50:36vps.2daygeek.comsshd[23909]:input_userauth_request:invaliduserpi[preauth] Sep2312:50:37vps.2daygeek.comsshd[23911]:pam_unix(sshd:auth):checkpass;userunknown Sep2312:50:37vps.2daygeek.comsshd[23911]:pam_unix(sshd:auth):authenticationfailure;logname=uid=0euid=0tty=sshruser=rhost=95.210.113.142 Sep2312:50:37vps.2daygeek.comsshd[23909]:pam_unix(sshd:auth):checkpass;userunknown Sep2312:50:37vps.2daygeek.comsshd[23909]:pam_unix(sshd:auth):authenticationfailure;logname=uid=0euid=0tty=sshruser=rhost=95.210.113.142 Sep2312:50:39vps.2daygeek.comsshd[23911]:Failedpasswordforinvaliduserpifrom95.210.113.142port51670ssh2 Sep2312:50:39vps.2daygeek.comsshd[23909]:Failedpasswordforinvaliduserpifrom95.210.113.142port51666ssh2 Sep2312:50:40vps.2daygeek.comsshd[23911]:Connectionclosedby95.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]:Receivedsignal15;terminating. Sep2302:08:56vps138235.vps.ovh.casystemd[1]:StoppingOpenSSHserverdaemon... Sep2302:08:56vps138235.vps.ovh.casystemd[1]:StartingOpenSSHserverdaemon... Sep2302:08:56vps138235.vps.ovh.casshd[11584]:Serverlisteningon0.0.0.0port22. Sep2302:08:56vps138235.vps.ovh.casshd[11584]:Serverlisteningon::port22. Sep2302:08:56vps138235.vps.ovh.casystemd[1]:StartedOpenSSHserverdaemon.
查看Linux进程占用端口号是我们系统管理员必会技能,以上6种查看LINUX系统进程已占用端口的命令大家至少要会其它一种
对于Linux系统管理员来说,清楚某个服务是否正确地绑定或监听某个端口,是至关重要的。如果你需要处理端口相关的问题,这篇文章可能会对你有用。
端口是Linux系统上特定进程之间逻辑连接的标识,包括物理端口和软件端口。由于Linux操作系统是一个软件,因此本文只讨论软件端口。软件端口始终与主机的IP地址和相关的通信协议相关联,因此端口常用于区分应用程序。大部分涉及到网络的服务都必须打开一个套接字来监听传入的网络请求,而每个服务都使用一个独立的套接字。
套接字是和IP地址、软件端口和协议结合起来使用的,而端口号对传输控制协议(TCP)和用户数据报协议(UDP)协议都适用,TCP和UDP都可以使用0到65535之间的端口号进行通信。
以下是端口分配类别:
0-1023:常用端口和系统端口
1024-49151:软件的注册端口
49152-65535:动态端口或私有端口
在Linux上的/etc/services文件可以查看到更多关于保留端口的信息。
#less/etc/services #/etc/services: #$Id:services,v1.552013/04/14ovasikExp$ # #Networkservices,Internetstyle #IANAservicesversion:lastupdated2013-04-10 # #NotethatitispresentlythepolicyofIANAtoassignasinglewell-known #portnumberforbothTCPandUDP;hence,mostentriesherehavetwoentries #eveniftheprotocoldoesn'tsupportUDPoperations. #UpdatedfromRFC1700,``AssignedNumbers''(October1994).Notallports #areincluded,onlythemorecommonones. # #ThelatestIANAportassignmentscanbegottenfrom #http://www.iana.org/assignments/port-numbers #TheWellKnownPortsarethosefrom0through1023. #TheRegisteredPortsarethosefrom1024through49151 #TheDynamicand/orPrivatePortsarethosefrom49152through65535 # #Eachlinedescribesoneservice,andisoftheform: # #service-nameport/protocol[aliases...][#comment] tcpmux1/tcp#TCPportservicemultiplexer tcpmux1/udp#TCPportservicemultiplexer rje5/tcp#RemoteJobEntry rje5/udp#RemoteJobEntry echo7/tcp echo7/udp discard9/tcpsinknull discard9/udpsinknull systat11/tcpusers systat11/udpusers daytime13/tcp daytime13/udp qotd17/tcpquote qotd17/udpquote msp18/tcp#messagesendprotocol(historic) msp18/udp#messagesendprotocol(historic) chargen19/tcpttytstsource chargen19/udpttytstsource ftp-data20/tcp ftp-data20/udp #21isregisteredtoftp,butalsousedbyfsp ftp21/tcp ftp21/udpfspfspd ssh22/tcp#TheSecureShell(SSH)Protocol ssh22/udp#TheSecureShell(SSH)Protocol telnet23/tcp telnet23/udp #24-privatemailsystem lmtp24/tcp#LMTPMailDelivery lmtp24/udp#LMTPMailDelivery
可以使用以下六种方法查看端口信息。
ss:可以用于转储套接字统计信息。
netstat:可以显示打开的套接字列表。
lsof:可以列出打开的文件。
fuser:可以列出那些打开了文件的进程的进程ID。
nmap:是网络检测工具和端口扫描程序。
systemctl:是systemd系统的控制管理器和服务管理器。
以下我们将找出sshd守护进程所使用的端口号。
方法1:使用ss命令
ss一般用于转储套接字统计信息。它能够输出类似于netstat输出的信息,但它可以比其它工具显示更多的TCP信息和状态信息。
它还可以显示所有类型的套接字统计信息,包括PACKET、TCP、UDP、DCCP、RAW、Unix域等。
#ss-tnlp|grepssh LISTEN0128*:22*:*users:(("sshd",pid=997,fd=3)) LISTEN0128:::22:::*users:(("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))
方法2:使用netstat命令
netstat能够显示网络连接、路由表、接口统计信息、伪装连接以及多播成员。
默认情况下,netstat会列出打开的套接字。如果不指定任何地址族,则会显示所有已配置地址族的活动套接字。但netstat已经过时了,一般会使用ss来替代。
#netstat-tnlp|grepssh tcp000.0.0.0:220.0.0.0:*LISTEN997/sshd tcp600:::22:::*LISTEN997/sshd
也可以使用端口号来检查。
#netstat-tnlp|grep":22" tcp000.0.0.0:220.0.0.0:*LISTEN1208/sshd tcp600:::22:::*LISTEN1208/sshd
方法3:使用lsof命令
lsof能够列出打开的文件,并列出系统上被进程打开的文件的相关信息。
#lsof-i-P|grepssh COMMANDPIDUSERFDTYPEDEVICESIZE/OFFNODENAME sshd11584root3uIPv4276250t0TCP*:22(LISTEN) sshd11584root4uIPv6276270t0TCP*:22(LISTEN) sshd11592root3uIPv4277440t0TCPvps.2daygeek.com:ssh->103.5.134.167:49902(ESTABLISHED)
也可以使用端口号来检查。
#lsof-itcp:22 COMMANDPIDUSERFDTYPEDEVICESIZE/OFFNODENAME sshd1208root3uIPv4209190t0TCP*:ssh(LISTEN) sshd1208root4uIPv6209210t0TCP*:ssh(LISTEN) sshd11592root3uIPv4277440t0TCPvps.2daygeek.com:ssh->103.5.134.167:49902(ESTABLISHED)
方法4:使用fuser命令
fuser工具会将本地系统上打开了文件的进程的进程ID显示在标准输出中。
#fuser-v22/tcp USERPIDACCESSCOMMAND 22/tcp:root1208F....sshd root12388F....sshd root49339F....sshd
方法5:使用nmap命令
nmap(“NetworkMapper”)是一款用于网络检测和安全审计的开源工具。它最初用于对大型网络进行快速扫描,但它对于单个主机的扫描也有很好的表现。
nmap使用原始IP数据包来确定网络上可用的主机,这些主机的服务(包括应用程序名称和版本)、主机运行的操作系统(包括操作系统版本等信息)、正在使用的数据包过滤器或防火墙的类型,以及很多其它信息。
#nmap-sV-p22localhost StartingNmap6.40(http://nmap.org)at2018-09-2312:36IST Nmapscanreportforlocalhost(127.0.0.1) Hostisup(0.000089slatency). Otheraddressesforlocalhost(notscanned):127.0.0.1 PORTSTATESERVICEVERSION 22/tcpopensshOpenSSH7.4(protocol2.0) Servicedetectionperformed.Pleasereportanyincorrectresultsathttp://nmap.org/submit/. Nmapdone:1IPaddress(1hostup)scannedin0.44seconds
方法6:使用systemctl命令
systemctl是systemd系统的控制管理器和服务管理器。它取代了旧的SysV初始化系统管理,目前大多数现代Linux操作系统都采用了systemd。
#systemctlstatussshd ●sshd.service-OpenSSHserverdaemon Loaded:loaded(/usr/lib/systemd/system/sshd.service;enabled;vendorpreset:enabled) Active:active(running)sinceSun2018-09-2302:08:56EDT;6h11minago Docs:man:sshd(8) man:sshd_config(5) MainPID:11584(sshd) CGroup:/system.slice/sshd.service └─11584/usr/sbin/sshd-D Sep2302:08:56vps.2daygeek.comsystemd[1]:StartingOpenSSHserverdaemon... Sep2302:08:56vps.2daygeek.comsshd[11584]:Serverlisteningon0.0.0.0port22. Sep2302:08:56vps.2daygeek.comsshd[11584]:Serverlisteningon::port22. Sep2302:08:56vps.2daygeek.comsystemd[1]:StartedOpenSSHserverdaemon. Sep2302:09:15vps.2daygeek.comsshd[11589]:Connectionclosedby103.5.134.167port49899[preauth] Sep2302:09:41vps.2daygeek.comsshd[11592]:Acceptedpasswordforrootfrom103.5.134.167port49902ssh2
以上输出的内容显示了最近一次启动sshd服务时ssh服务的监听端口。但它不会将最新日志更新到输出中。
#systemctlstatussshd ●sshd.service-OpenSSHserverdaemon Loaded:loaded(/usr/lib/systemd/system/sshd.service;enabled;vendorpreset:enabled) Active:active(running)sinceThu2018-09-0607:40:59IST;2weeks3daysago 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]:Invaliduserpifrom95.210.113.142port51666 Sep2312:50:36vps.2daygeek.comsshd[23909]:input_userauth_request:invaliduserpi[preauth] Sep2312:50:37vps.2daygeek.comsshd[23911]:pam_unix(sshd:auth):checkpass;userunknown Sep2312:50:37vps.2daygeek.comsshd[23911]:pam_unix(sshd:auth):authenticationfailure;logname=uid=0euid=0tty=sshruser=rhost=95.210.113.142 Sep2312:50:37vps.2daygeek.comsshd[23909]:pam_unix(sshd:auth):checkpass;userunknown Sep2312:50:37vps.2daygeek.comsshd[23909]:pam_unix(sshd:auth):authenticationfailure;logname=uid=0euid=0tty=sshruser=rhost=95.210.113.142 Sep2312:50:39vps.2daygeek.comsshd[23911]:Failedpasswordforinvaliduserpifrom95.210.113.142port51670ssh2 Sep2312:50:39vps.2daygeek.comsshd[23909]:Failedpasswordforinvaliduserpifrom95.210.113.142port51666ssh2 Sep2312:50:40vps.2daygeek.comsshd[23911]:Connectionclosedby95.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]:Receivedsignal15;terminating. Sep2302:08:56vps138235.vps.ovh.casystemd[1]:StoppingOpenSSHserverdaemon... Sep2302:08:56vps138235.vps.ovh.casystemd[1]:StartingOpenSSHserverdaemon... Sep2302:08:56vps138235.vps.ovh.casshd[11584]:Serverlisteningon0.0.0.0port22. Sep2302:08:56vps138235.vps.ovh.casshd[11584]:Serverlisteningon::port22. Sep2302:08:56vps138235.vps.ovh.casystemd[1]:StartedOpenSSHserverdaemon.
对于Linux系统管理员来说,清楚某个服务是否正确地绑定或监听某个端口,是至关重要的。如果你需要处理端口相关的问题,这篇文章可能会对你有用。
端口是Linux系统上特定进程之间逻辑连接的标识,包括物理端口和软件端口。由于Linux操作系统是一个软件,因此本文只讨论软件端口。软件端口始终与主机的IP地址和相关的通信协议相关联,因此端口常用于区分应用程序。大部分涉及到网络的服务都必须打开一个套接字来监听传入的网络请求,而每个服务都使用一个独立的套接字。
套接字是和IP地址、软件端口和协议结合起来使用的,而端口号对传输控制协议(TCP)和用户数据报协议(UDP)协议都适用,TCP和UDP都可以使用0到65535之间的端口号进行通信。
以下是端口分配类别:
0-1023:常用端口和系统端口
1024-49151:软件的注册端口
49152-65535:动态端口或私有端口
在Linux上的/etc/services文件可以查看到更多关于保留端口的信息。
#less/etc/services #/etc/services: #$Id:services,v1.552013/04/14ovasikExp$ # #Networkservices,Internetstyle #IANAservicesversion:lastupdated2013-04-10 # #NotethatitispresentlythepolicyofIANAtoassignasinglewell-known #portnumberforbothTCPandUDP;hence,mostentriesherehavetwoentries #eveniftheprotocoldoesn'tsupportUDPoperations. #UpdatedfromRFC1700,``AssignedNumbers''(October1994).Notallports #areincluded,onlythemorecommonones. # #ThelatestIANAportassignmentscanbegottenfrom #http://www.iana.org/assignments/port-numbers #TheWellKnownPortsarethosefrom0through1023. #TheRegisteredPortsarethosefrom1024through49151 #TheDynamicand/orPrivatePortsarethosefrom49152through65535 # #Eachlinedescribesoneservice,andisoftheform: # #service-nameport/protocol[aliases...][#comment] tcpmux1/tcp#TCPportservicemultiplexer tcpmux1/udp#TCPportservicemultiplexer rje5/tcp#RemoteJobEntry rje5/udp#RemoteJobEntry echo7/tcp echo7/udp discard9/tcpsinknull discard9/udpsinknull systat11/tcpusers systat11/udpusers daytime13/tcp daytime13/udp qotd17/tcpquote qotd17/udpquote msp18/tcp#messagesendprotocol(historic) msp18/udp#messagesendprotocol(historic) chargen19/tcpttytstsource chargen19/udpttytstsource ftp-data20/tcp ftp-data20/udp #21isregisteredtoftp,butalsousedbyfsp ftp21/tcp ftp21/udpfspfspd ssh22/tcp#TheSecureShell(SSH)Protocol ssh22/udp#TheSecureShell(SSH)Protocol telnet23/tcp telnet23/udp #24-privatemailsystem lmtp24/tcp#LMTPMailDelivery lmtp24/udp#LMTPMailDelivery
可以使用以下六种方法查看端口信息。
ss:可以用于转储套接字统计信息。
netstat:可以显示打开的套接字列表。
lsof:可以列出打开的文件。
fuser:可以列出那些打开了文件的进程的进程ID。
nmap:是网络检测工具和端口扫描程序。
systemctl:是systemd系统的控制管理器和服务管理器。
以下我们将找出sshd守护进程所使用的端口号。
方法1:使用ss命令
ss一般用于转储套接字统计信息。它能够输出类似于netstat输出的信息,但它可以比其它工具显示更多的TCP信息和状态信息。
它还可以显示所有类型的套接字统计信息,包括PACKET、TCP、UDP、DCCP、RAW、Unix域等。
#ss-tnlp|grepssh LISTEN0128*:22*:*users:(("sshd",pid=997,fd=3)) LISTEN0128:::22:::*users:(("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))
方法2:使用netstat命令
netstat能够显示网络连接、路由表、接口统计信息、伪装连接以及多播成员。
默认情况下,netstat会列出打开的套接字。如果不指定任何地址族,则会显示所有已配置地址族的活动套接字。但netstat已经过时了,一般会使用ss来替代。
#netstat-tnlp|grepssh tcp000.0.0.0:220.0.0.0:*LISTEN997/sshd tcp600:::22:::*LISTEN997/sshd
也可以使用端口号来检查。
#netstat-tnlp|grep":22" tcp000.0.0.0:220.0.0.0:*LISTEN1208/sshd tcp600:::22:::*LISTEN1208/sshd
方法3:使用lsof命令
lsof能够列出打开的文件,并列出系统上被进程打开的文件的相关信息。
#lsof-i-P|grepssh COMMANDPIDUSERFDTYPEDEVICESIZE/OFFNODENAME sshd11584root3uIPv4276250t0TCP*:22(LISTEN) sshd11584root4uIPv6276270t0TCP*:22(LISTEN) sshd11592root3uIPv4277440t0TCPvps.2daygeek.com:ssh->103.5.134.167:49902(ESTABLISHED)
也可以使用端口号来检查。
#lsof-itcp:22 COMMANDPIDUSERFDTYPEDEVICESIZE/OFFNODENAME sshd1208root3uIPv4209190t0TCP*:ssh(LISTEN) sshd1208root4uIPv6209210t0TCP*:ssh(LISTEN) sshd11592root3uIPv4277440t0TCPvps.2daygeek.com:ssh->103.5.134.167:49902(ESTABLISHED)
方法4:使用fuser命令
fuser工具会将本地系统上打开了文件的进程的进程ID显示在标准输出中。
#fuser-v22/tcp USERPIDACCESSCOMMAND 22/tcp:root1208F....sshd root12388F....sshd root49339F....sshd
方法5:使用nmap命令
nmap(“NetworkMapper”)是一款用于网络检测和安全审计的开源工具。它最初用于对大型网络进行快速扫描,但它对于单个主机的扫描也有很好的表现。
nmap使用原始IP数据包来确定网络上可用的主机,这些主机的服务(包括应用程序名称和版本)、主机运行的操作系统(包括操作系统版本等信息)、正在使用的数据包过滤器或防火墙的类型,以及很多其它信息。
#nmap-sV-p22localhost StartingNmap6.40(http://nmap.org)at2018-09-2312:36IST Nmapscanreportforlocalhost(127.0.0.1) Hostisup(0.000089slatency). Otheraddressesforlocalhost(notscanned):127.0.0.1 PORTSTATESERVICEVERSION 22/tcpopensshOpenSSH7.4(protocol2.0) Servicedetectionperformed.Pleasereportanyincorrectresultsathttp://nmap.org/submit/. Nmapdone:1IPaddress(1hostup)scannedin0.44seconds
方法6:使用systemctl命令
systemctl是systemd系统的控制管理器和服务管理器。它取代了旧的SysV初始化系统管理,目前大多数现代Linux操作系统都采用了systemd。
#systemctlstatussshd ●sshd.service-OpenSSHserverdaemon Loaded:loaded(/usr/lib/systemd/system/sshd.service;enabled;vendorpreset:enabled) Active:active(running)sinceSun2018-09-2302:08:56EDT;6h11minago Docs:man:sshd(8) man:sshd_config(5) MainPID:11584(sshd) CGroup:/system.slice/sshd.service └─11584/usr/sbin/sshd-D Sep2302:08:56vps.2daygeek.comsystemd[1]:StartingOpenSSHserverdaemon... Sep2302:08:56vps.2daygeek.comsshd[11584]:Serverlisteningon0.0.0.0port22. Sep2302:08:56vps.2daygeek.comsshd[11584]:Serverlisteningon::port22. Sep2302:08:56vps.2daygeek.comsystemd[1]:StartedOpenSSHserverdaemon. Sep2302:09:15vps.2daygeek.comsshd[11589]:Connectionclosedby103.5.134.167port49899[preauth] Sep2302:09:41vps.2daygeek.comsshd[11592]:Acceptedpasswordforrootfrom103.5.134.167port49902ssh2
以上输出的内容显示了最近一次启动sshd服务时ssh服务的监听端口。但它不会将最新日志更新到输出中。
#systemctlstatussshd ●sshd.service-OpenSSHserverdaemon Loaded:loaded(/usr/lib/systemd/system/sshd.service;enabled;vendorpreset:enabled) Active:active(running)sinceThu2018-09-0607:40:59IST;2weeks3daysago 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]:Invaliduserpifrom95.210.113.142port51666 Sep2312:50:36vps.2daygeek.comsshd[23909]:input_userauth_request:invaliduserpi[preauth] Sep2312:50:37vps.2daygeek.comsshd[23911]:pam_unix(sshd:auth):checkpass;userunknown Sep2312:50:37vps.2daygeek.comsshd[23911]:pam_unix(sshd:auth):authenticationfailure;logname=uid=0euid=0tty=sshruser=rhost=95.210.113.142 Sep2312:50:37vps.2daygeek.comsshd[23909]:pam_unix(sshd:auth):checkpass;userunknown Sep2312:50:37vps.2daygeek.comsshd[23909]:pam_unix(sshd:auth):authenticationfailure;logname=uid=0euid=0tty=sshruser=rhost=95.210.113.142 Sep2312:50:39vps.2daygeek.comsshd[23911]:Failedpasswordforinvaliduserpifrom95.210.113.142port51670ssh2 Sep2312:50:39vps.2daygeek.comsshd[23909]:Failedpasswordforinvaliduserpifrom95.210.113.142port51666ssh2 Sep2312:50:40vps.2daygeek.comsshd[23911]:Connectionclosedby95.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]:Receivedsignal15;terminating. Sep2302:08:56vps138235.vps.ovh.casystemd[1]:StoppingOpenSSHserverdaemon... Sep2302:08:56vps138235.vps.ovh.casystemd[1]:StartingOpenSSHserverdaemon... Sep2302:08:56vps138235.vps.ovh.casshd[11584]:Serverlisteningon0.0.0.0port22. Sep2302:08:56vps138235.vps.ovh.casshd[11584]:Serverlisteningon::port22. Sep2302:08:56vps138235.vps.ovh.casystemd[1]:StartedOpenSSHserverdaemon.
afd
对于Linux系统管理员来说,清楚某个服务是否正确地绑定或监听某个端口,是至关重要的。如果你需要处理端口相关的问题,这篇文章可能会对你有用。
端口是Linux系统上特定进程之间逻辑连接的标识,包括物理端口和软件端口。由于Linux操作系统是一个软件,因此本文只讨论软件端口。软件端口始终与主机的IP地址和相关的通信协议相关联,因此端口常用于区分应用程序。大部分涉及到网络的服务都必须打开一个套接字来监听传入的网络请求,而每个服务都使用一个独立的套接字。
套接字是和IP地址、软件端口和协议结合起来使用的,而端口号对传输控制协议(TCP)和用户数据报协议(UDP)协议都适用,TCP和UDP都可以使用0到65535之间的端口号进行通信。
以下是端口分配类别:
0-1023:常用端口和系统端口
1024-49151:软件的注册端口
49152-65535:动态端口或私有端口
在Linux上的/etc/services文件可以查看到更多关于保留端口的信息。
#less/etc/services #/etc/services: #$Id:services,v1.552013/04/14ovasikExp$ # #Networkservices,Internetstyle #IANAservicesversion:lastupdated2013-04-10 # #NotethatitispresentlythepolicyofIANAtoassignasinglewell-known #portnumberforbothTCPandUDP;hence,mostentriesherehavetwoentries #eveniftheprotocoldoesn'tsupportUDPoperations. #UpdatedfromRFC1700,``AssignedNumbers''(October1994).Notallports #areincluded,onlythemorecommonones. # #ThelatestIANAportassignmentscanbegottenfrom #http://www.iana.org/assignments/port-numbers #TheWellKnownPortsarethosefrom0through1023. #TheRegisteredPortsarethosefrom1024through49151 #TheDynamicand/orPrivatePortsarethosefrom49152through65535 # #Eachlinedescribesoneservice,andisoftheform: # #service-nameport/protocol[aliases...][#comment] tcpmux1/tcp#TCPportservicemultiplexer tcpmux1/udp#TCPportservicemultiplexer rje5/tcp#RemoteJobEntry rje5/udp#RemoteJobEntry echo7/tcp echo7/udp discard9/tcpsinknull discard9/udpsinknull systat11/tcpusers systat11/udpusers daytime13/tcp daytime13/udp qotd17/tcpquote qotd17/udpquote msp18/tcp#messagesendprotocol(historic) msp18/udp#messagesendprotocol(historic) chargen19/tcpttytstsource chargen19/udpttytstsource ftp-data20/tcp ftp-data20/udp #21isregisteredtoftp,butalsousedbyfsp ftp21/tcp ftp21/udpfspfspd ssh22/tcp#TheSecureShell(SSH)Protocol ssh22/udp#TheSecureShell(SSH)Protocol telnet23/tcp telnet23/udp #24-privatemailsystem lmtp24/tcp#LMTPMailDelivery lmtp24/udp#LMTPMailDelivery
可以使用以下六种方法查看端口信息。
ss:可以用于转储套接字统计信息。
netstat:可以显示打开的套接字列表。
lsof:可以列出打开的文件。
fuser:可以列出那些打开了文件的进程的进程ID。
nmap:是网络检测工具和端口扫描程序。
systemctl:是systemd系统的控制管理器和服务管理器。
以下我们将找出sshd守护进程所使用的端口号。
方法1:使用ss命令
ss一般用于转储套接字统计信息。它能够输出类似于netstat输出的信息,但它可以比其它工具显示更多的TCP信息和状态信息。
它还可以显示所有类型的套接字统计信息,包括PACKET、TCP、UDP、DCCP、RAW、Unix域等。
#ss-tnlp|grepssh LISTEN0128*:22*:*users:(("sshd",pid=997,fd=3)) LISTEN0128:::22:::*users:(("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))
方法2:使用netstat命令
netstat能够显示网络连接、路由表、接口统计信息、伪装连接以及多播成员。
默认情况下,netstat会列出打开的套接字。如果不指定任何地址族,则会显示所有已配置地址族的活动套接字。但netstat已经过时了,一般会使用ss来替代。
#netstat-tnlp|grepssh tcp000.0.0.0:220.0.0.0:*LISTEN997/sshd tcp600:::22:::*LISTEN997/sshd
也可以使用端口号来检查。
#netstat-tnlp|grep":22" tcp000.0.0.0:220.0.0.0:*LISTEN1208/sshd tcp600:::22:::*LISTEN1208/sshd
方法3:使用lsof命令
lsof能够列出打开的文件,并列出系统上被进程打开的文件的相关信息。
#lsof-i-P|grepssh COMMANDPIDUSERFDTYPEDEVICESIZE/OFFNODENAME sshd11584root3uIPv4276250t0TCP*:22(LISTEN) sshd11584root4uIPv6276270t0TCP*:22(LISTEN) sshd11592root3uIPv4277440t0TCPvps.2daygeek.com:ssh->103.5.134.167:49902(ESTABLISHED)
也可以使用端口号来检查。
#lsof-itcp:22 COMMANDPIDUSERFDTYPEDEVICESIZE/OFFNODENAME sshd1208root3uIPv4209190t0TCP*:ssh(LISTEN) sshd1208root4uIPv6209210t0TCP*:ssh(LISTEN) sshd11592root3uIPv4277440t0TCPvps.2daygeek.com:ssh->103.5.134.167:49902(ESTABLISHED)
方法4:使用fuser命令
fuser工具会将本地系统上打开了文件的进程的进程ID显示在标准输出中。
#fuser-v22/tcp USERPIDACCESSCOMMAND 22/tcp:root1208F....sshd root12388F....sshd root49339F....sshd
方法5:使用nmap命令
nmap(“NetworkMapper”)是一款用于网络检测和安全审计的开源工具。它最初用于对大型网络进行快速扫描,但它对于单个主机的扫描也有很好的表现。
nmap使用原始IP数据包来确定网络上可用的主机,这些主机的服务(包括应用程序名称和版本)、主机运行的操作系统(包括操作系统版本等信息)、正在使用的数据包过滤器或防火墙的类型,以及很多其它信息。
#nmap-sV-p22localhost StartingNmap6.40(http://nmap.org)at2018-09-2312:36IST Nmapscanreportforlocalhost(127.0.0.1) Hostisup(0.000089slatency). Otheraddressesforlocalhost(notscanned):127.0.0.1 PORTSTATESERVICEVERSION 22/tcpopensshOpenSSH7.4(protocol2.0) Servicedetectionperformed.Pleasereportanyincorrectresultsathttp://nmap.org/submit/. Nmapdone:1IPaddress(1hostup)scannedin0.44seconds
方法6:使用systemctl命令
systemctl是systemd系统的控制管理器和服务管理器。它取代了旧的SysV初始化系统管理,目前大多数现代Linux操作系统都采用了systemd。
#systemctlstatussshd ●sshd.service-OpenSSHserverdaemon Loaded:loaded(/usr/lib/systemd/system/sshd.service;enabled;vendorpreset:enabled) Active:active(running)sinceSun2018-09-2302:08:56EDT;6h11minago Docs:man:sshd(8) man:sshd_config(5) MainPID:11584(sshd) CGroup:/system.slice/sshd.service └─11584/usr/sbin/sshd-D Sep2302:08:56vps.2daygeek.comsystemd[1]:StartingOpenSSHserverdaemon... Sep2302:08:56vps.2daygeek.comsshd[11584]:Serverlisteningon0.0.0.0port22. Sep2302:08:56vps.2daygeek.comsshd[11584]:Serverlisteningon::port22. Sep2302:08:56vps.2daygeek.comsystemd[1]:StartedOpenSSHserverdaemon. Sep2302:09:15vps.2daygeek.comsshd[11589]:Connectionclosedby103.5.134.167port49899[preauth] Sep2302:09:41vps.2daygeek.comsshd[11592]:Acceptedpasswordforrootfrom103.5.134.167port49902ssh2
以上输出的内容显示了最近一次启动sshd服务时ssh服务的监听端口。但它不会将最新日志更新到输出中。
#systemctlstatussshd ●sshd.service-OpenSSHserverdaemon Loaded:loaded(/usr/lib/systemd/system/sshd.service;enabled;vendorpreset:enabled) Active:active(running)sinceThu2018-09-0607:40:59IST;2weeks3daysago 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]:Invaliduserpifrom95.210.113.142port51666 Sep2312:50:36vps.2daygeek.comsshd[23909]:input_userauth_request:invaliduserpi[preauth] Sep2312:50:37vps.2daygeek.comsshd[23911]:pam_unix(sshd:auth):checkpass;userunknown Sep2312:50:37vps.2daygeek.comsshd[23911]:pam_unix(sshd:auth):authenticationfailure;logname=uid=0euid=0tty=sshruser=rhost=95.210.113.142 Sep2312:50:37vps.2daygeek.comsshd[23909]:pam_unix(sshd:auth):checkpass;userunknown Sep2312:50:37vps.2daygeek.comsshd[23909]:pam_unix(sshd:auth):authenticationfailure;logname=uid=0euid=0tty=sshruser=rhost=95.210.113.142 Sep2312:50:39vps.2daygeek.comsshd[23911]:Failedpasswordforinvaliduserpifrom95.210.113.142port51670ssh2 Sep2312:50:39vps.2daygeek.comsshd[23909]:Failedpasswordforinvaliduserpifrom95.210.113.142port51666ssh2 Sep2312:50:40vps.2daygeek.comsshd[23911]:Connectionclosedby95.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]:Receivedsignal15;terminating. Sep2302:08:56vps138235.vps.ovh.casystemd[1]:StoppingOpenSSHserverdaemon... Sep2302:08:56vps138235.vps.ovh.casystemd[1]:StartingOpenSSHserverdaemon... Sep2302:08:56vps138235.vps.ovh.casshd[11584]:Serverlisteningon0.0.0.0port22. Sep2302:08:56vps138235.vps.ovh.casshd[11584]:Serverlisteningon::port22. Sep2302:08:56vps138235.vps.ovh.casystemd[1]:StartedOpenSSHserverdaemon.
查看Linux系统中进程占用端口号是我们系统管理员必须掌握的一项技能,以上查看进程端口的6种方法我们至少要会一种,希望大家熟练掌握这些内容