如何检查远程 Linux 系统上的端口是否开放?

在Linux系统的网络管理范畴内,检查远程服务器端口是否开放是一项极为重要的操作。这一工作对于系统管理员而言意义重大,同时也是安全审计的关键构成部分。确保必要端口对外开放,并且封锁不必要的端口,能够切实提升系统的安全性,有效规避潜在的攻击威胁。

在正式展开操作之前,我们有必要先了解一些基础概念:

  • 端口:在计算机网络里,端口是用于标识特定进程的通信入口,每个应用程序均会借助某个端口来开展通信。常见的端口号有HTTP的80端口、HTTPS的443端口、SSH的22端口等。
  • 开放端口:意味着服务器上特定端口处于监听状态,并且允许来自外部的连接。对于远程系统的管理或者服务的访问而言,确认端口是否开放极为关键。
  • 远程系统:也就是通过网络连接的另一台计算机或者服务器,其可能位于内网,也可能处于互联网中。检查远程系统端口是否开放,主要是借助网络协议来进行探测。

常用方法一:运用 telnet 命令检查端口

telnet 命令是最为直接、简便的检查远程系统端口是否开放的方式。它能够助力你迅速验证特定端口是否作出响应。

telnet 命令使用步骤

  1. 打开终端,输入如下命令:

    telnet <远程IP地址> <端口号>
    
  2. 举例来说,若你想要检查远程服务器 192.168.3.110 上的80端口是否开放,可输入:

    telnet 192.168.3.110 80
    
  3. 倘若端口开放,telnet 会显示连接成功的消息,并且返回类似如下的提示:

  1. 要是端口未开放,命令将会显示连接失败的消息:

    Trying 192.168.3.110...
    telnet: Unable to connect to remote host: Connection refused
    
  • 优点:操作简单直接,能够快速检查某个端口是否响应。
  • 缺点:在众多Linux发行版中,telnet 已被弃用,而且其功能相对基础,不支持复杂的网络分析。

telnet 常见用法

1. 远程登录到服务器

如果你想远程登录到一台服务器,可以使用 telnet 命令指定服务器的 IP 地址或域名。例如,要登录到 IP 地址为 192.168.1.100 的服务器:

telnet 192.168.1.100

如果服务器开启了 Telnet 服务,并且允许你登录,你会看到登录提示,然后输入用户名和密码进行登录。

2. 检查远程服务器端口是否开放

这是 telnet 命令一个非常实用的功能。通过指定服务器的 IP 地址和端口号,你可以快速判断该端口是否开放。例如,检查 192.168.1.100 服务器的 80 端口是否开放:

telnet 192.168.1.100 80
  • 端口开放:如果端口开放,telnet 会尝试建立连接,并显示连接成功的消息,此时可能会进入一个交互式界面,或者显示一些服务器返回的信息。
  • 端口关闭:如果端口关闭,命令会显示连接失败的消息,如 telnet: Unable to connect to remote host: Connection refused

3. 连接到特定服务

你可以使用 telnet 连接到特定的网络服务。例如,连接到 SMTP 服务器(通常使用 25 端口)来测试邮件发送功能:

telnet smtp.example.com 25

连接成功后,你可以按照 SMTP 协议的规范输入命令来模拟邮件发送过程。

4、其他常用参数

  • -E

    该参数用于禁止转义字符。在 telnet 会话中,默认情况下某些字符可能会被解释为特殊的控制命令,使用 -E 参数可以禁用这种功能。例如:

    telnet -E 192.168.1.100
    
  • -l

    指定登录远程主机时使用的用户名。例如,要以 user 用户名登录到 192.168.1.100 服务器:

    telnet -l user 192.168.1.100
    
  • -r

    使用类似 rlogin 的操作环境。rlogin 是另一种远程登录协议,使用 -r 参数可以让 telnet 模拟 rlogin 的一些操作方式:

    telnet -r 192.168.1.100
    
  • 退出 telnet 会话

    telnet 会话中,你可以通过以下方式退出:

    • 输入 Ctrl + ] 进入 telnet 的命令模式。
    • 在命令模式下,输入 quitexit 并按回车键,即可退出 telnet 会话。

由于 telnet 协议以明文形式传输数据,包括用户名、密码等敏感信息,存在严重的安全风险。在实际应用中,建议使用更安全的替代方案,如 SSH(Secure Shell)来进行远程登录,使用其他安全的工具来检查端口开放情况。

常用方法二:运用nc(Netcat)命令

nc(即Netcat)堪称一款功能强大的网络工具,在网络调试与端口扫描领域应用广泛。它不但能够检查端口是否开放,还能提供更为丰富的网络信息。

nc命令使用步骤

  1. 输入以下命令用于检查远程端口:

    nc -zv <远程IP地址> <端口号>
    
  2. 举例来讲,若要检查远程地址192.168.3.110的80端口,可输入:

    nc -zv 192.168.3.110 80
    
  3. 若端口开放,其输出内容如下:

  1. 若端口未开放,则会输出:

    nc: connect to 192.168.3.110 port 80 (tcp) failed: Connection refused
    
  • 优点nc灵活性极高,支持多种网络协议,适用于扫描多个端口,可作为telnet的理想替代工具。
  • 缺点:尽管功能强劲,但命令使用方式相对复杂,对于初学者而言,存在一定的学习门槛。

nc 命令常见用法

1. 端口扫描

  • 扫描单个端口:使用 -zv 选项可以快速检查目标主机的指定端口是否开放。-z 表示只进行端口扫描,不发送任何数据;-v 表示显示详细的执行过程。

    nc -zv target_host 80
    

    如果端口开放,会显示类似 Connection to target_host 80 port [tcp/http] succeeded! 的信息;如果端口关闭,则会显示连接失败的信息。

  • 扫描多个端口:可以使用 -p 选项指定要扫描的端口范围。

    nc -zv target_host 20-30
    

    这个命令会扫描目标主机从 20 到 30 的所有端口。

2. 建立 TCP 连接

  • 作为客户端连接到服务器:可以使用 nc 作为客户端连接到运行在指定端口的服务器。

    nc target_host 80
    

    连接成功后,你可以与服务器进行交互,例如输入 HTTP 请求来获取网页内容。

  • 作为服务器监听端口:使用 -l 选项可以让 nc 作为服务器监听指定的端口。

    nc -l 8080
    

    这个命令会在本地监听 8080 端口,等待客户端的连接。当有客户端连接时,你可以与客户端进行交互。

3. 建立 UDP 连接

  • UDP 客户端:使用 -u 选项可以指定使用 UDP 协议进行通信。

    nc -u target_host 53
    

    这个命令会作为 UDP 客户端连接到目标主机的 53 端口(通常是 DNS 服务端口)。

  • UDP 服务器:同样使用 -l-u 选项可以让 nc 作为 UDP 服务器监听指定端口。

    nc -lu 5353
    

    这个命令会在本地监听 5353 端口的 UDP 连接。

4. 文件传输

  • 发送文件:可以使用 nc 在两台主机之间传输文件。在发送端,将文件内容通过标准输入传递给 nc

    nc target_host 1234 < file.txt
    

    这个命令会把 file.txt 文件的内容发送到目标主机的 1234 端口。

  • 接收文件:在接收端,使用 nc 监听指定端口,并将接收到的数据保存到文件中。

    nc -l 1234 > received_file.txt
    

    这样,接收端就会将从发送端接收到的数据保存到 received_file.txt 文件中。

5. 远程命令执行

可以通过 nc 建立的连接在远程主机上执行命令。在服务器端监听端口并执行命令:

nc -l 9999 -e /bin/bash

在客户端连接到服务器并发送命令:

nc target_host 9999

连接成功后,客户端输入的命令将在服务器端执行,并将结果返回给客户端。

nc 命令常用选项

  • -4:强制使用 IPv4 地址。
  • -6:强制使用 IPv6 地址。
  • -n:不进行 DNS 解析,直接使用 IP 地址。
  • -w:设置连接超时时间。例如,-w 5 表示设置超时时间为 5 秒。
  • -q:在传输结束后等待指定的秒数再退出。例如,-q 2 表示等待 2 秒后退出。

注意事项

  • 在使用 nc 进行远程命令执行时,要确保服务器端的安全性,避免被恶意利用。
  • 由于 nc 传输的数据是明文的,在传输敏感信息时要谨慎使用,建议使用加密的传输方式。

常用方法三:借助nmap开展端口扫描

nmap是一款极为强大的网络扫描工具,可用于扫描远程Linux系统的开放端口,检测安全漏洞等。它支持TCP、UDP协议扫描,并且能够执行操作系统识别等高级功能。

nmap命令使用步骤

  1. 安装nmap

    在大多数Linux系统中,可通过以下命令进行安装:

    sudo apt-get install nmap  # Debian/Ubuntu系统
    sudo yum install nmap      # CentOS/RHEL系统
    
  2. 使用nmap进行端口扫描

    nmap <远程IP地址>
    
  3. 例如,要检查192.168.3.110的开放端口,输入:

    nmap 192.168.3.110
    

    扫描结果可能会呈现如下形式:

  4. 倘若你仅关注某些特定端口,也能指定端口范围进行扫描:

    nmap -p 22,80,443 192.168.3.110
    

    扫描结果如下:

高级用法:操作系统探测

nmap 具备强大的操作系统识别功能,能够助力用户精准判断远程主机的操作系统版本。具体执行命令如下:

nmap -O 192.168.3.110

执行上述命令后,输出结果大致如下所示:

  • 优点:其功能极其强劲,支持诸如操作系统检测、版本识别等丰富多样的高级功能。能够对多个端口进行扫描作业,在网络管理员执行网络架构梳理、排查网络故障,以及安全审计人员开展安全漏洞检测、风险评估等工作场景中,发挥着关键作用,高度契合他们的实际工作需求 。
  • 缺点:鉴于其功能的复杂性,对于初次接触的新手而言,相关命令的理解与运用存在一定难度。并且,当扫描范围设定得过大时,会显著增加网络数据传输量,极有可能给网络带宽带来沉重压力,影响网络的正常运行与其他业务的流畅开展 。

常用方法四:运用ss命令查看本地端口

当用户拥有远程Linux主机的访问权限时,可借助ss命令便捷地查看本机的开放端口。ss作为一款替代netstat的工具,具备显著优势,其运行速度通常更快,并且能够提供更为精准、详尽的端口信息。

ss命令使用步骤

  1. 通过SSH成功登录远程系统后,输入以下命令来查看开放端口:

    ss -tuln
    

    上述命令中各参数含义如下:

    • -t:用于指定显示TCP连接相关信息。
    • -u:表示显示UDP连接的情况。
    • -l:作用是仅显示处于监听状态的端口。
    • -n:意味着不进行域名解析,直接以IP地址形式展示结果 。
  2. 命令执行后,输出内容大致呈现如下样式:

  • 优点:无需额外安装其他工具,在大多数Linux发行版中均为内置命令。执行速度极快,能够高效、迅速地完成本机开放端口的检查工作,为用户提供及时、有效的端口状态信息 。
  • 缺点:该命令仅适用于对本机端口状态的检查操作,无法应用于远程系统端口的探测与查看 。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

文章由技术书栈整理,本文链接:https://study.disign.me/article/202511/15.linux-remote-port-probe.md

发布时间: 2025-03-13