如何在 Unix 中测试远程主机端口是否可访问

如何在 Unix 中测试远程主机端口是否可访问

在 Windows 中,我进入命令行并使用“telnet”来检查端口。如何在 Unix 中执行相同操作?

似乎有些人使用“tcpdump port”命令。这是在监控实时流量吗?谢谢。

答案1

nmap是一个用于此类事情以及其他许多事情的出色的通用工具。

nmap host.domain.tld(或者nmap host对于本地机器,或者nmap <ipaddr>通过地址而不是名称检查机器)将列出打开的常用端口。

nmap 192.168.23.1-254 -p 22,80,443将通过地址扫描一系列主机,以查看通常与 SSH、HTTP 和 HTTPS 关联的 TCP 端口是否打开。

查看man nmap更多选项 - 它是网络检查工具的厨房水槽。

您可能目前没有安装 nmap,但它几乎存在于所有发行版的标准存储库中。对于 debian 或 ubuntu 变体,aptitude install nmap请安装它,或者在您选择的 GUI 包管理器中找到它。如果它在您的系统上不容易找到,请从获取它并获取更多信息http://nmap.org/

您也可以使用telnet您已经熟悉的客户端技术,因为该技术也可用,并且通常安装在默认软件包中,但它nmap是一种值得了解的工具,因为它有助于诊断网络问题,检查一切是否正常等等。如果您希望远离命令行与它交互,它还有一些不错的图形前端。

答案2

如果您使用的是 bash,那么手册页会指出您可以写入 /dev/tcp/HostNameOrIP/port。我使用过几次,如果远程端口已打开,则不会有任何响应。如果系统无法连接到远程端口,则会说明原因

[kevin@box ~]$ echo -n > /dev/tcp/www.yahoo.com/80
[kevin@box ~]$ nslookup www.no-such-domain.com
Server:         127.0.0.1
Address:        127.0.0.1#53

** server can't find www.no-such-domain.com: NXDOMAIN

[kevin@box ~]$ echo -n > /dev/tcp/www.no-such-domain.com/80
-bash: www.no-such-domain.com: Name or service not known
-bash: /dev/tcp/www.no-such-domain.com/80: Invalid argument
[kevin@box ~]$ echo -n > /dev/tcp/192.168.3.3/80    #no such server on my network
-bash: connect: No route to host
-bash: /dev/tcp/192.168.3.3/80: No route to host
[kevin@box ~]$ echo -n > /dev/tcp/192.168.3.1/88    #nothing listening on port 88
-bash: connect: Connection refused
-bash: /dev/tcp/192.168.3.1/88: Connection refused
[kevin@box ~]$

答案3

telnet您也可以在 *nix 机器上使用。

答案4

要测试端口在 Bash 中是否可访问,可以使用以下单行命令:

$ </dev/tcp/example.com/80 && echo Port is open || echo Port is closed
Port is open

要手动检查,请使用telnet命令(与 Windows 类似)。

相关内容