蚊章汇 - 端口
type: channel
link: https://linuxcn.bwsl.wang/tag/%E7%AB%AF%E5%8F%A3/
items: 如何在 Linux 中查找服务的端口号
items: 如何检查多个远程 Linux 系统是否打开了指定端口？
items: 如何检查 Linux 中的开放端口列表？
items: 查看远程 Linux 系统中某个端口是否开启的 3 种方法
items: 如何在 Linux 中查看进程占用的端口号
items: SSH 协议端口号 22 背后的故事
items: 使用 nc 命令检查远程端口是否打开
items: 如何在 Linux/Unix 系统中验证端口是否打开

如何在 Linux 中查找服务的端口号
type: item
date: 2019-07-06T21:36:13+08:00
description: 由于某些原因，你可能经常需要查找端口名称和端口号。如果是这样，你很幸运。今天，在这个简短的教程中，我们将看到在 Linux 系统中最简单、最快捷的查找服务端口号的方法。可能有很多方法可以做到，但我目前只知道以下三种方法。请继续阅读。在 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.iana.org/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 程序Whatportis 是一个简单的 Python 脚本，来用于查找端口名称和端口号。与上述命令不同，此程序以漂亮的表格形式输出。确保已安装 pip 包管理器。如果没有，请参考以下链接。如何使用 pip 管理 Python 包安装 pip 后，运行以下命令安装 Whatportis 程序。$ pip install whatportis现在，你可以找到与服务关联的端口，如下所示。$ whatportis ssh $ whatportis ftp $ whatportis http我的 CentOS 7 服务器的示例输出：在 Linux 中查找服务的端口号如果你不知道服务的确切名称，请使用 –like 标志来显示相关结果。$ whatportis mysql…

如何检查多个远程 Linux 系统是否打开了指定端口？
type: item
date: 2019-04-23T07:08:11+08:00
description: 我们最近写了一篇文章关于如何检查远程 Linux 服务器是否打开指定端口。它能帮助你检查单个服务器。如果要检查五个服务器有没有问题，可以使用以下任何一个命令，如 nc（netcat）、nmap 和 telnet。但是如果想检查 50 多台服务器，那么你的解决方案是什么？要检查所有服务器并不容易，如果你一个一个这样做，完全没有必要，因为这样你将会浪费大量的时间。为了解决这种情况，我使用 nc 命令编写了一个 shell 小脚本，它将允许我们扫描任意数量服务器给定的端口。如果你要查找单个服务器扫描，你有多个选择，你只需阅读 检查远程 Linux 系统上的端口是否打开？ 了解更多信息。本教程中提供了两个脚本，这两个脚本都很有用。这两个脚本都用于不同的目的，你可以通过阅读标题轻松理解其用途。在你阅读这篇文章之前，我会问你几个问题，如果你不知道答案你可以通过阅读这篇文章来获得答案。如何检查一个远程 Linux 服务器上指定的端口是否打开？如何检查多个远程 Linux 服务器上指定的端口是否打开？如何检查多个远程 Linux 服务器上是否打开了多个指定的端口？什么是 nc（netcat）命令？nc 即 netcat。它是一个简单实用的 Unix 程序，它使用 TCP 或 UDP 协议进行跨网络连接进行数据读取和写入。它被设计成一个可靠的 “后端” 工具，我们可以直接使用或由其他程序和脚本轻松驱动它。同时，它也是一个功能丰富的网络调试和探索工具，因为它可以创建你需要的几乎任何类型的连接，并具有几个有趣的内置功能。netcat 有三个主要的模式。分别是连接模式，监听模式和隧道模式。nc（netcat）的通用语法：$ nc [-options] [HostName or IP] [PortNumber]如何检查多个远程 Linux 服务器上的端口是否打开？如果要检查多个远程 Linux 服务器上给定端口是否打开，请使用以下 shell 脚本。在我的例子中，我们将检查端口 22 是否在以下远程服务器中打开，确保你已经更新文件中的服务器列表而不是使用我的服务器列表。你必须确保已经更新服务器列表 ：server-list.txt 。每个服务器（IP）应该在单独的行中。# cat server-list.txt 192.168.1.2 192.168.1.3 192.168.1.4 192.168.1.5 192.168.1.6 192.168.1.7使用以下脚本可以达到此目的。# vi port_scan.sh #!/bin/sh for server in `more server-list.txt` do #echo $i nc -zvw3 $server 22 done设置 port_scan.sh 文件的可执行权限。$ chmod +x port_scan.sh最后运行脚本来达到此目的。# sh port_scan.sh Connection to 192.168.1.2 22 port [tcp/ssh] succeeded! Connection to 192.168.1.3 22 port [tcp/ssh] succeeded! Connection to 192.168.1.4 22 port [tcp/ssh] succeeded! Connection to 192.168.1.5 22 port [tcp/ssh] succeeded! Connection to 192.168.1.6 22 port [tcp/ssh] succeeded! Connection to 192.168.1.7 22 port [tcp/ssh] succeeded!如何检查多个远程 Linux 服务器上是否打开多个端口？如果要检查多个服务器中的多个端口，请使用下面的脚本。在我的例子中，我们将检查给定服务器的 22 和 80 端口是否打开。确保你必须替换所需的端口和服务器名称而不使用是我的。你必须确保已经将要检查的端口写入 port-list.txt 文件中。每个端口应该在一个单独的行中。# cat port-list.txt 22 80你必须确保已经将要检查的服务器（IP 地址）写入 server-list.txt 到文件中。每个服务器（IP） 应该在单独的行中。# cat server-list.txt 192.168.1.2 192.168.1.3 192.168.1.4 192.168.1.5 192.168.1.6 192.168.1.7使用以下脚本来达成此目的。# vi multiple_port_scan.sh #!/bin/sh for server in `more server-list.txt` do for port …

如何检查 Linux 中的开放端口列表？
type: item
date: 2019-04-17T16:51:00+08:00
description: 最近，我们就同一主题写了两篇文章。这些文章内容帮助你如何检查远程服务器中给定的端口是否打开。如果你想 检查远程 Linux 系统上的端口是否打开 请点击链接浏览。如果你想 检查多个远程 Linux 系统上的端口是否打开 请点击链接浏览。如果你想 检查多个远程 Linux 系统上的多个端口状态 请点击链接浏览。但是本文帮助你检查本地系统上的开放端口列表。在 Linux 中很少有用于此目的的实用程序。然而，我提供了四个最重要的 Linux 命令来检查这一点。你可以使用以下四个命令来完成这个工作。这些命令是非常出名的并被 Linux 管理员广泛使用。netstat：netstat (“network statistics”) 是一个显示网络连接（进和出）相关信息命令行工具，例如：路由表, 伪装连接,多点传送成员和网络端口。nmap：Nmap (“Network Mapper”) 是一个网络探索与安全审计的开源工具。它旨在快速扫描大型网络。ss： ss 被用于转储套接字统计信息。它也可以类似 netstat 使用。相比其他工具它可以展示更多的TCP状态信息。lsof： lsof 是 List Open File 的缩写. 它用于输出被某个进程打开的所有文件。如何使用 Linux 命令 netstat 检查系统中的开放端口列表netstat 是 Network Statistics 的缩写，是一个显示网络连接（进和出）相关信息命令行工具，例如：路由表、伪装连接、多播成员和网络端口。它可以列出所有的 tcp、udp 连接和所有的 unix 套接字连接。它用于发现发现网络问题，确定网络连接数量。# netstat -tplugn Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 2038/master tcp 0 0 127.0.0.1:199 0.0.0.0:* LISTEN 1396/snmpd tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1398/httpd tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1388/sshd tcp6 0 0 :::25 :::* LISTEN 2038/master tcp6 0 0 :::22 :::* LISTEN 1388/sshd udp 0 0 0.0.0.0:39136 0.0.0.0:* 1396/snmpd udp 0 0 0.0.0.0:56130 0.0.0.0:* 1396/snmpd udp 0 0 0.0.0.0:40105 0.0.0.0:* 1396/snmpd udp 0 0 0.0.0.0:11584 0.0.0.0:* 1396/snmpd udp 0 0 0.0.0.0:30105 0.0.0.0:* 1396/snmpd udp 0 0 0.0.0.0:50656 0.0.0.0:* 1396/snmpd udp 0 0 0.0.0.0:1632 0.0.0.0:* 1396/snmpd udp 0 0 0.0.0.0:28265 0.0.0.0:* 1396/snmpd udp 0 0 0.0.0.0:40764 0.0.0.0:* 1396/snmpd udp 0 0 10.90.56.21:123 0.0.0.0:* 895/ntpd udp 0 0 127.0.0.1:123 0.0.0.0:* 895/ntpd udp 0 0 0.0.0.0:123 0.0.0.0:* 895/ntpd udp 0 0 0.0.0.0:53390 0.0.0.0:* 1396/snmpd udp 0 0 0.0.0.0:161 0.0.0.0:* 1396/snmpd udp6 0 0 :::123 :::* 895/ntpd IPv6/IPv4 Group Memberships Interface RefCnt Group --------------- ------ --------------------- lo 1 224.0.0.1 eth0 1 224.0.0.1 lo 1 ff02::1 lo 1 ff01::1 eth0 1 ff02::1 eth0 1 ff01::1你也可以使用下面的命令检查特定的端口。# # netstat -tplugn | grep :22 tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1388/…

查看远程 Linux 系统中某个端口是否开启的 3 种方法
type: item
date: 2019-04-02T07:42:22+08:00
description: 这是一个很重要的话题，不仅对 Linux 管理员而言，对于我们大家而言也非常有帮助。我的意思是说对于工作在 IT 基础设施行业的用户来说，了解这个话题也是非常有用的。他们需要在执行下一步操作前，检查 Linux 服务器上某个端口是否开启。假如这个端口没有被开启，则他们会直接找 Linux 管理员去开启它。如果这个端口已经开启了，则我们需要和应用团队来商量下一步要做的事。在本篇文章中，我们将向你展示如何检查某个端口是否开启的 3 种方法。这个目标可以使用下面的 Linux 命令来达成：nc：netcat 是一个简单的 Unix 工具，它使用 TCP 或 UDP 协议去读写网络连接间的数据。nmap：（“Network Mapper”）是一个用于网络探索和安全审计的开源工具，被设计用来快速地扫描大规模网络。telnet：被用来交互地通过 TELNET 协议与另一台主机通信。如何使用 nc（netcat）命令来查看远程 Linux 系统中某个端口是否开启？nc 即 netcat。netcat 是一个简单的 Unix 工具，它使用 TCP 或 UDP 协议去读写网络连接间的数据。它被设计成为一个可信赖的后端工具，可被直接使用或者简单地被其他程序或脚本调用。与此同时，它也是一个富含功能的网络调试和探索工具，因为它可以创建你所需的几乎所有类型的连接，并且还拥有几个内置的有趣功能。netcat 有三类功能模式，它们分别为连接模式、监听模式和隧道模式。nc（netcat）命令的一般语法：$ nc [-options] [HostName or IP] [PortNumber]在下面的例子中，我们将检查远程 Linux 系统中的 22 端口是否开启。假如端口是开启的，你将获得类似下面的输出。# nc -zvw3 192.168.1.8 22 Connection to 192.168.1.8 22 port [tcp/ssh] succeeded!命令详解：nc：即执行的命令主体；z：零 I/O 模式（被用来扫描）；v：显式地输出；w3：设置超时时间为 3 秒；192.168.1.8：目标系统的 IP 地址；22：需要验证的端口。当检测到端口没有开启，你将获得如下输出：# nc -zvw3 192.168.1.95 22 nc: connect to 192.168.1.95 port 22 (tcp) failed: Connection refused如何使用 nmap 命令来查看远程 Linux 系统中某个端口是否开启？nmap（“Network Mapper”）是一个用于网络探索和安全审计的开源工具，被设计用来快速地扫描大规模网络，尽管对于单个主机它也同样能够正常工作。nmap 以一种新颖的方式，使用裸 IP 包来决定网络中的主机是否可达，这些主机正提供什么服务（应用名和版本号），它们运行的操作系统（系统的版本），它们正在使用的是什么包过滤软件或者防火墙，以及其他额外的特性。尽管 nmap 通常被用于安全审计，许多系统和网络管理员发现在一些日常任务（例如罗列网络资产、管理服务升级的计划、监视主机或者服务是否正常运行）中，它也同样十分有用。nmap 的一般语法：$ nmap [-options] [HostName or IP] [-p] [PortNumber]假如端口是开启的，你将获得如下的输出：# nmap 192.168.1.8 -p 22 Starting Nmap 7.70 ( https://nmap.org ) at 2019-03-16 03:37 IST Nmap scan report for 192.168.1.8 Host is up (0.00031s latency). PORT STATE SERVICE 22/tcp open ssh Nmap done: 1 IP address (1 host up) scanned in 13.06 seconds假如端口没有开启，你将得到类似下面的结果：# nmap 192.168.1.8 -p 80 Starting Nmap 7.70 ( https://nmap.org ) at 2019-03-16 04:30 IST Nmap scan report for 192.168.1.8 Host is up (0.00036s latency). PORT STATE SERVICE 80/tcp closed http Nmap done: 1 IP address (1 host up) scanned in 13.07 seconds如何使用 telnet 命令来查看远程 Linux 系统中某个端口是否开启？telnet 命令被用来交互地通过 TELN…

如何在 Linux 中查看进程占用的端口号
type: item
date: 2018-10-02T20:38:13+08:00
description: 对于 Linux 系统管理员来说，清楚某个服务是否正确地绑定或监听某个端口，是至关重要的。如果你需要处理端口相关的问题，这篇文章可能会对你有用。端口是 Linux 系统上特定进程之间逻辑连接的标识，包括物理端口和软件端口。由于 Linux 操作系统是一个软件，因此本文只讨论软件端口。软件端口始终与主机的 IP 地址和相关的通信协议相关联，因此端口常用于区分应用程序。大部分涉及到网络的服务都必须打开一个套接字来监听传入的网络请求，而每个服务都使用一个独立的套接字。推荐阅读：在 Linux 上查看进程 ID 的 4 种方法在 Linux 上终止进程的 3 种方法套接字是和 IP 地址、软件端口和协议结合起来使用的，而端口号对传输控制协议（TCP）和用户数据报协议（UDP）协议都适用，TCP 和 UDP 都可以使用 0 到 65535 之间的端口号进行通信。以下是端口分配类别：0 - 1023： 常用端口和系统端口1024 - 49151： 软件的注册端口49152 - 65535： 动态端口或私有端口在 Linux 上的 /etc/services 文件可以查看到更多关于保留端口的信息。# less /etc/services # /etc/services: # $Id: services,v 1.55 2013/04/14 ovasik Exp $ # # Network services, Internet style # IANA services version: last updated 2013-04-10 # # Note that it is presently the policy of IANA to assign a single well-known # port number for both TCP and UDP; hence, most entries here have two entries # even if the protocol doesn't support UDP operations. # Updated from RFC 1700, ``Assigned Numbers'' (October 1994). Not all ports # are included, only the more common ones. # # The latest IANA port assignments can be gotten from # http://www.iana.org/assignments/port-numbers # The Well Known Ports are those from 0 through 1023. # The Registered Ports are those from 1024 through 49151 # The Dynamic and/or Private Ports are those from 49152 through 65535 # # Each line describes one service, and is of the form: # # service-name port/protocol [aliases ...] [# comment] tcpmux 1/tcp # TCP port service multiplexer tcpmux 1/udp # TCP port service multiplexer rje 5/tcp # Remote Job Entry rje 5/udp # Remote Job Entry echo 7/tcp echo 7/udp discard 9/tcp sink null discard 9/udp sink null systat 11/tcp users systat 11/udp users daytime 13/tcp daytime 13/udp qotd 17/tcp quote qotd 17/udp quote msp 18/tcp # message send protocol (historic) msp 18/udp # message send protocol (historic) chargen 19/tcp ttytst source chargen 19/udp ttytst source 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 ssh 22/tcp # The S…

SSH 协议端口号 22 背后的故事
type: item
date: 2017-05-05T00:15:00+08:00
description: 为什么 SSH（安全终端）的端口号是 22 呢，这不是一个巧合，这其中有个我（Tatu Ylonen，SSH 协议的设计者）未曾诉说的故事。将 SSH 协议端口号设为 22 的故事1995 年春我编写了 SSH 协议的最初版本，那时候 telnet 和 FTP 正被广泛使用。当时我设计 SSH 协议想着是为了替代 telnet（端口 23）和 ftp（端口21）两个协议的，而端口 22 是空闲的。我想当然地就选择了夹在 telnet 和 ftp 的端口中间的数字。我觉得端口号虽然是个小事但似乎又存在着某种信念。但我到底要怎么拿到那个端口号呢？我未曾拥有过任何一个端口号，但我却认识几个拥有端口号的人！在那时取得端口号的事情其实说来挺简单的。毕竟当时的因特网（Internet）并不是很大，是因特网爆炸的早期。端口号分配的活儿是 IANA（Internet Assigned Numbers Authority，互联网数字分配机构）干的。在那时这机构可相当于是因特网先驱 Jon Postel 和 Joyce K. Reynolds 一般的存在。Jon 参与编写了多项主要的协议标准，例如 IP（RFC 791）、ICMP（RFC 792）和 TCP（RFC 793）等一些你应该早有耳闻的协议。我可以说是敬畏 Jon 先生的，他参与编写了几乎所有主要的因特网标准文档（Internet RFC）！1995 年 7 月，就在我发布 ssh-1.0 前，我发送了一封邮件给 IANA：From ylo Mon Jul 10 11:45:48 +0300 1995 From: Tatu Ylonen mailto:ylo@cs.hut.fi To: Internet Assigned Numbers Authority mailto:iana@isi.edu Subject: 请求取得一个端口号 Organization: 芬兰赫尔辛基理工大学亲爱的机构成员：我写了个可以在不安全的网络环境中安全地从一台机器登录到另一台机器的程序。它主要是对现有的 telnet 协议以及 rlogin 协议的功能性提升和安全性改进。说的具体些，就是可以防御 IP、DNS 或路由等欺骗行为。我打算将我的软件免费地发布在因特网上，以得到广泛地使用。我希望为该软件注册一个特权端口号，要是这个端口号在 1 到 255 之间就更好了，这样它就可以用在名字服务器的 WKS 字段中了。我在附件中附上了协议标准的草案。这个软件已经在本地运行了几个月了，我已准备在获得端口号后就发布。如果端口号分配一事安排的及时，我希望这周就将要发布的软件准备好。我目前在 beta 版测试时使用的端口号是 22，如果要是能够分配到这个端口，我就不用做什么更改了（目前这个端口在列表中还是空闲的）。软件中服务的名称叫 ssh（系 Secure Shell 的缩写）。您最真诚的，Tatu Ylonen mailto:ylo@cs.hut.fi（LCTT 译注：DNS 协议中的 WKS 记录类型意即“众所周知的业务描述”，是类似于 A、MX 这样的 DNS 记录类型，用于描述某个 IP 所提供的服务，目前鲜见使用。参见： https://docs.oracle.com/cd/E19683-01/806-4077/dnsintro-154/index.html 。）第二天，我就收到了 Joyce 发来的邮件：Date: Mon, 10 Jul 1995 15:35:33 -0700 From: jkrey@ISI.EDU To: ylo@cs.hut.fi Subject: 回复：请求取得一个端口号 Cc: iana@ISI.EDU Tatu,我们将端口号 22 分配给 ssh 服务了，你目前是该服务的主要联系人。Joyce这就搞定了！SSH 的端口正式使用 22！！！1995 年 7 月 12 日上午 2 点 21 分，我给我在赫尔辛基理工大学的测试者们宣布了 SSH 的最后 beta 版本。当日下午 5 点 23 分，我给测试者们宣布了 ssh-1.0.0 版本。1995 年 7 月 12 日，下午 5 点 51 分，我将一份 SSH（安全终端）的宣告发给了 cypherpunks@toad.com 的邮件列表，此外我还将其发给了一些新闻组、邮件列表和一些在因特网上讨论相关话题的人们。如何更改 SSH 服务的端口号SSH 服务器是默认运行在 22 号端口上的。然而，由于某些原因需要，它也可以运行在别的端口上。比如为了方便测试使用，又比如在同一个宿主机上运行多个不同的配置。当然，极少情况下，不使用 root 权限运行它也可以，比如某些必须运行在非特权的端口的情况（端口号大于等于 1024）。端口号可以在配置文…

使用 nc 命令检查远程端口是否打开
type: item
date: 2017-02-09T19:50:00+08:00
description: 端口是与 Linux 操作系统上的应用或进程的通讯端点的逻辑实体。在使用之前，了解目标机器上哪些端口是打开并正在运行服务是非常有用的。我们可以使用 netstat 或其他几个 Linux 命令如 NMAP 在本地机器上轻松地列出 Linux 中的打开端口。在本指南中，我们将向你展示如何使用简单的 netcat（简称 nc）命令来确定远程主机上的端口是否可访问/打开。netcat（或简称 nc）是一个功能强大且易于使用的程序，可用于 Linux 中与 TCP、UDP 或 UNIX 域套接字相关的任何事情。# yum install nc [在 CentOS/RHEL 中] # dnf install nc [在 Fedora 22+ 中] $ sudo apt-get install netcat [在 Debian/Ubuntu 中] 我们可以使用它：打开 TCP 连接、侦听任意 TCP 和 UDP 端口、发送 UDP 数据包、在 IPv4 和 IPv6 进行端口扫描。使用 netcat，你可以检查单个或多个或一段打开的端口范围，如下所示。下面的命令将帮助我们查看端口 22 是否在主机 192.168.56.10 上打开：$ nc -zv 192.168.1.15 22 上面的命令中，这些标志是：-z – 设置 nc 只是扫描侦听守护进程，实际上不向它们发送任何数据。-v – 启用详细模式下面的命令会检查远程主机 192.168.5.10 上是否打开了端口 80、22 和 21（我们也可以使用主机名）：nc -zv 192.168.56.10 80 22 21 也可以指定端口扫描的范围：$ nc -zv 192.168.56.10 20-80 更多关于 netcat 命令的例子和使用，阅读我们下面的文章。使用 netcat 命令在 Linux 服务器间传输文件Linux 网络配置及排障调试命令就是这样。在本文中，我们解释了如何使用 netcat 命令检测远程主机端口是否可达/打开。请在评论栏中留下你的想法。作者简介：Aaron Kili 是 Linux 和 F.O.S.S 爱好者，将来的 Linux SysAdmin 和 web 开发人员，目前是 TecMint 的内容创建者，他喜欢用电脑工作，并坚信分享知识。via: http://www.tecmint.com/check-remote-port-in-linux/作者：Aaron Kili 译者：geekpi 校对：jasminepeng本文由 LCTT 原创编译，Linux中国 荣誉推出

如何在 Linux/Unix 系统中验证端口是否打开
type: item
date: 2017-01-01T16:09:00+08:00
description: 在 Linux 或者类 Unix 中，我该如何检查某个端口是否被占用？我又该如何验证 Linux 服务器中有哪些端口处于监听状态？验证哪些端口在服务器的网络接口上处于监听状态是非常重要的。你需要注意那些开放端口来检测网络入侵。除了网络入侵，为了排除故障，确认服务器上的某个端口是否被其他应用程序占用也是必要的。比方说，你可能会在同一个系统中安装了 Apache 和 Nginx 服务器，所以了解是 Apache 还是 Nginx 占用了 # 80/443 TCP 端口真的很重要。这篇快速教程会介绍使用 netstat 、 nmap 和 lsof 命令来检查端口使用信息并找出哪些程序正在使用这些端口。如何检查 Linux 中的程序和监听的端口1、 打开一个终端，如 shell 命令窗口。 2、 运行以下任意一行命令：sudo lsof -i -P -n | grep LISTEN sudo netstat -tulpn | grep LISTEN sudo nmap -sTU -O IP地址 下面我们看看这些命令和它们的详细输出内容：方式 1：lsof 命令语法如下：$ sudo lsof -i -P -n $ sudo lsof -i -P -n | grep LISTEN $ doas lsof -i -P -n | grep LISTEN ### OpenBSD 输出如下：图 1：使用 lsof 命令检查监听端口和程序仔细看上面输出的最后一行：sshd 85379 root 3u IPv4 0xffff80000039e000 0t0 TCP 10.86.128.138:22 (LISTEN) sshd 是程序的名称10.86.128.138 是 sshd 程序绑定 (LISTEN) 的 IP 地址22 是被使用 (LISTEN) 的 TCP 端口85379 是 sshd 任务的进程 ID (PID)方式 2：netstat 命令你可以如下面所示使用 netstat 来检查监听的端口和程序。Linux 中 netstat 语法$ netstat -tulpn | grep LISTEN FreeBSD/MacOS X 中 netstat 语法$ netstat -anp tcp | grep LISTEN $ netstat -anp udp | grep LISTEN OpenBSD 中 netstat 语法$ netstat -na -f inet | grep LISTEN $ netstat -nat | grep LISTEN 方式 3：nmap 命令语法如下：$ sudo nmap -sT -O localhost $ sudo nmap -sU -O 192.168.2.13 ### 列出打开的 UDP 端口 $ sudo nmap -sT -O 192.168.2.13 ### 列出打开的 TCP 端口 示例输出如下：图 2：使用 nmap 探测哪些端口监听 TCP 连接你可以用一句命令合并 TCP/UDP 扫描：$ sudo nmap -sTU -O 192.168.2.13 赠品：对于 Windows 用户在 windows 系统下可以使用下面的命令检查端口使用情况：netstat -bano | more netstat -bano | grep LISTENING netstat -bano | findstr /R /C:"[LISTING]" via: https://www.cyberciti.biz/faq/unix-linux-check-if-port-is-in-use-command/作者：VIVEK GITE 译者：GHLandy 校对：oska874本文由 LCTT 原创编译，Linux中国 荣誉推出