检查特定 tcp/udp 端口​​上正在运行什么服务

检查特定 tcp/udp 端口​​上正在运行什么服务

我正在寻找一个命令行实用程序,它允许我检查远程计算机的特定端口上正在运行什么服务(例如:http/ftp/ssh)。

我想象这样的程序如何运行的一个例子:

kess@KG-PC:~$ portcheck google.com:80
Port 80 of google.com is running a(n) "http" server

答案1

进行此类识别的最简单方法是建立与此端口的连接并抓取横幅。横幅(通常)可以告诉您这是否是 Apache httpd、openssh 等。横幅列表可能相当大。您也可以尝试一些命令,例如GET / HTTP/1检查服务是否响应它们。对于纯文本命令telnet就足够了。对于加密 (SSL/TLS),您可能需要使用openssl s_client.

AFAIKnmap可以做这样的事情,所以你可以下载源代码并检查那里是如何完成的。

如果您只想使用一个工具,您可以测试:

nmap -A google.com -p 80

答案2

您可以ss将该-p选项与过滤器一起使用,以显示哪个进程正在使用特定端口。

按目标端口过滤:

ss -p dst = :<port>

按源端口过滤:

ss -p src = :<port>

获取进程可能需要 root 权限。

如果您无权访问远程计算机,则可以使用 执行端口扫描nmap。这将列出开放端口以及与端口关联的常用服务,但不能保证该服务是计算机上实际使用的服务,因为端口可以任意更改。

使用特定端口范围的基本扫描:

nmap -p <first-port>-<last-port> <host>

相关内容