在 Linux 中查找服务的端口号
方法1:使用 grep 命令
要使用 grep 命令在 Linux 中查找指定服务的默认端口号,只需运行:
- $ grep <port> /etc/services
例如,要查找 SSH 服务的默认端口,只需运行:
- $ grep ssh /etc/services
就这么简单。此命令应该适用于大多数 Linux 发行版。以下是我的 Arch Linux 测试机中的示例输出:
- ssh 22/tcp
- ssh 22/udp
- ssh 22/sctp
- sshell 614/tcp
- sshell 614/udp
- netconf-ssh 830/tcp
- netconf-ssh 830/udp
- sdo-ssh 3897/tcp
- sdo-ssh 3897/udp
- netconf-ch-ssh 4334/tcp
- snmpssh 5161/tcp
- snmpssh-trap 5162/tcp
- tl1-ssh 6252/tcp
- tl1-ssh 6252/udp
- ssh-mgmt 17235/tcp
- ssh-mgmt 17235/udp
正如你在上面的输出中所看到的,SSH 服务的默认端口号是 22。
让我们找到 Apache Web 服务器的端口号。为此,命令是:
- $ grep http /etc/services
- # http://www.xxx.com/assignments/port-numbers
- http 80/tcp www www-http # WorldWideWeb HTTP
- http 80/udp www www-http # HyperText Transfer Protocol
- http 80/sctp # HyperText Transfer Protocol
- https 443/tcp # http protocol over TLS/SSL
- https 443/udp # http protocol over TLS/SSL
- https 443/sctp # http protocol over TLS/SSL
- gss-http 488/tcp
- gss-http 488/udp
- webcache 8080/tcp http-alt # WWW caching service
- webcache 8080/udp http-alt # WWW caching service
- [...]
FTP 端口号是什么?这很简单!
- $ grep ftp /etc/services
- ftp-data 20/tcp
- ftp-data 20/udp
- # 21 is registered to ftp, but also used by fsp
- ftp 21/tcp
- ftp 21/udp fsp fspd
- tftp 69/tcp
- [...]
方法 2:使用 getent 命令
如你所见,上面的命令显示指定搜索词 “ssh”、“http” 和 “ftp” 的所有端口名称和数字。这意味着,你将获得与给定搜索词匹配的所有端口名称的相当长的输出。
但是,你可以使用 getent 命令精确输出结果,如下所示:
- $ getent services ssh
- ssh 22/tcp
- $ getent services http
- http 80/tcp www www-http
- $ getent services ftp
- ftp 21/tcp
如果你不知道端口名称,但是知道端口号,那么你只需将端口名称替换为数字:
- $ getent services 80
- http 80/tcp
要显示所有端口名称和端口号,只需运行:
- $ getent services
方法 3:使用 Whatportis 程序
在 Linux 中查找服务的端口号
如果你不知道服务的确切名称,请使用 –like 标志来显示相关结果。
- $ whatportis mysql --like
上述命令帮助你查找与服务关联的端口。你还可以找到与端口号相关联的服务,如下所示。
- $ whatportis 993
你甚至可以以 JSON 格式显示结果。
- $ whatportis 993 --json
,