由于某些原因,你可能经常需要查找端口名称和端口号。如果是这样,你很幸运。今天,在这个简短的教程中,我们将看到在Linux系统中最简单、最快捷的查找服务端口号的方法。可能有很多方法可以做到,但我目前只知道以下三种方法。请继续阅读。
在Linux中查找服务的端口号
方法1:使用grep命令
要使用grep命令在Linux中查找指定服务的默认端口号,只需运行:
$grep<port>/etc/services
例如,要查找SSH服务的默认端口,只需运行:
$grepssh/etc/services
就这么简单。此命令应该适用于大多数Linux发行版。以下是我的ArchLinux测试机中的示例输出:
ssh22/tcpssh22/udpssh22/sctpsshell614/tcpsshell614/udpnetconf-ssh830/tcpnetconf-ssh830/udpsdo-ssh3897/tcpsdo-ssh3897/udpnetconf-ch-ssh4334/tcpsnmpssh5161/tcpsnmpssh-trap5162/tcptl1-ssh6252/tcptl1-ssh6252/udpssh-mgmt17235/tcpssh-mgmt17235/udp
正如你在上面的输出中所看到的,SSH服务的默认端口号是22。
让我们找到ApacheWeb服务器的端口号。为此,命令是:
$grephttp/etc/services#http://www.iana.org/assignments/port-numbershttp80/tcpwwwwww-http#WorldWideWebHTTPhttp80/udpwwwwww-http#HyperTextTransferProtocolhttp80/sctp#HyperTextTransferProtocolhttps443/tcp#httpprotocoloverTLS/SSLhttps443/udp#httpprotocoloverTLS/SSLhttps443/sctp#httpprotocoloverTLS/SSLgss-http488/tcpgss-http488/udpwebcache8080/tcphttp- alt#WWWcachingservicewebcache8080/udphttp- alt#WWWcachingservice[...]
FTP端口号是什么?这很简单!
$grepftp/etc/servicesftp-data20/tcpftp-data20/udp#21isregisteredtoftp,butalsousedbyfspftp21/tcpftp21/udpfspfspdtftp69/tcp[...]
方法2:使用getent命令
如你所见,上面的命令显示指定搜索词“ssh”、“http”和“ftp”的所有端口名称和数字。这意味着,你将获得与给定搜索词匹配的所有端口名称的相当长的输出。
但是,你可以使用getent命令精确输出结果,如下所示:
$getentservicessshssh22/tcp$getentserviceshttphttp80/tcpwwwwww-http$getentservicesftpftp21/tcp
如果你不知道端口名称,但是知道端口号,那么你只需将端口名称替换为数字:
$getentservices80http80/tcp
要显示所有端口名称和端口号,只需运行:
$getentservices
方法3:使用Whatportis程序
Whatportis是一个简单的Python脚本,来用于查找端口名称和端口号。与上述命令不同,此程序以漂亮的表格形式输出。
确保已安装pip包管理器。如果没有,请参考以下链接。
安装pip后,运行以下命令安装Whatportis程序。
$pipinstallwhatportis
现在,你可以找到与服务关联的端口,如下所示。
$whatportisssh$whatportisftp$whatportishttp
我的CentOS7服务器的示例输出:
在Linux中查找服务的端口号
如果你不知道服务的确切名称,请使用–like标志来显示相关结果。
$grepssh/etc/services0
上述命令帮助你查找与服务关联的端口。你还可以找到与端口号相关联的服务,如下所示。
$grepssh/etc/services1
你甚至可以以JSON格式显示结果。
$grepssh/etc/services1--json
有关更多详细信息,请参阅GitHub仓库。
就是这些了。你现在知道了如何使用三种简单方法在Linux中查找端口名称和端口号。