Linux如何检查远程服务器中端口是否打开?

Linux如何检查远程服务器中端口是否打开?,第1张

这个非常简单,telnet、nc和nmap这3个命令就可以轻松实现,下面我简单介绍一下实现过程,感兴趣的朋友可以自己尝试一下:

telnet

这是基于telnet协议实现的一个远程登录命令,可以直接用于测试远程Linux服务器是否开启指定端口,安装的话,输入命令“yum install -y telnet”(或者“apt install -y telnet”)就行,使用方式“telnet 服务器IP地址 端口号”,如下,这里以端口22为例,如果返回结果为Connected,则说明端口开启,如果为refused,则说明端口关闭:

nc

也即netcat,一个简单实用的Unix(Linux)工具,主要用来读写网络间连接的数据,可以很方便的查看远程Linux服务器是否开启指定端口,如下,这里以3306端口为例,如果返回结果为Connected,则说明端口开启,如果为timed out,则说明端口关闭:

更多参数和说明的话,可以使用命令“nc -h”进行查看,官方文档解释的非常清楚详细,如下:

nmap

这是一个专门用于网络嗅探的工具,在渗透测试中经常会用到,也可以很方便的查看远程Linux服务器是否开启指定端口,安装的话,输入命令“yum install -y nmap”(或者“apt install -y nmap”)就行,如下,这里以80,21,3306这3个端口为例,如果返回结果为open,则说明端口开启,如果为filtered,则说明端口关闭:

更多参数和功能的话,可以使用帮助命令“nmap -h”进行查看,官方文档解释的非常详细清楚,一目了然,如下:

至此,我们就介绍完了使用telnet、nc和nmap这3个命令来查看远程Linux服务器是否开启指定端口。总的来说,这3种方式都非常简单,只要你有一定的Linux基础,熟悉一下相关参数和说明,很快就能掌握的,网上也有相关教程和资料,介绍的非常详细,感兴趣的话,可以搜一下,希望以上分享的内容能对你有所帮助吧,也欢迎大家评论、留言进行补充。

方法一,telnet host port

方法二,nc -t host port 其中-t代表tcp,-u是udp

方法三,任意语言,优先python,写一段 socket程序,调用connect函数看看是否成功

ping一下ip地址加上你想要的端口,就知道端口打开没有

常常看到有些人想要知道自己的Linux主机到底开放了多少Port?要如何来检测呢。通常我们知道的Port有下面这几个:

ftp:21

telnet:23

smtp:25

http:80

pop-3:110

netbios-ssn:139

squid:3128

mysql:3306

端口当然不只这些个,如何知道Port是否被开启呢?

检测你开启的服务有哪些?使用功能强大的 netstat 指令。

在做为服务器的Linux系统中,服务项目是越少越好!这样可以减少避免不必要的入侵通道。要了解自己的系统当中的服务项目,最简便的方法就是使用nestat 了!这个命令不但简单(是每一个Linux系统都会安装的套件!),而且功能也是很不错的,例如我们在检查WWW使用者的人数时,就很需要这个命令!好了,我们来看一下netstat 的使用方法:

复制内容到剪贴板

代码:

[root@localhost ~]# netstat

Active Internet connections (w/o servers)

Proto Recv-Q Send-Q Local Address Foreign Address Stat e

tcp 0 0 ::ffff:1921681178:ssh ::ffff:1921681175:4235 ESTA BLISHED

Active UNIX domain sockets (w/o servers)

Proto RefCnt Flags Type State I-Node Path

unix 10 [ ] DGRAM 4701 /dev/log

unix 2 [ ] DGRAM 5846 @/var/run/hal/hotplug_s ocket

unix 2 [ ] DGRAM 2901 @udevd

unix 3 [ ] STREAM CONNECTED 5845 /var/run/dbus/system_bu s_socket

unix 3 [ ] STREAM CONNECTED 5844

unix 3 [ ] STREAM CONNECTED 5792 /var/run/dbus/system_bu s_socket

unix 3 [ ] STREAM CONNECTED 5791

unix 3 [ ] STREAM CONNECTED 5724

unix 3 [ ] STREAM CONNECTED 5723

如上所示,单纯使用 netstat 的时候,仅 列出目前已经连通的服务与服务名称。所以你可以看到,由于目前仅有一个ssh连接成功,所有就只显示出一个 ESTABLISHED(连接中的意思)。 上面的 :

复制内容到剪贴板

代码:

tcp 0 0 ::ffff:1921681178:ssh ::ffff:1921681175:4235

这一行表示有一个SSH的服务开放,是由远端的 1921681175这个IP连接到 1921681178 的。而连接的端口是4235。那如果我需要将所有的项目列出来呢?

复制内容到剪贴板

代码:

[root@localhost ~]# netstat -a

Active Internet connections (servers and established)

Proto Recv-Q Send-Q Local Address Foreign Address Stat e

tcp 0 0 :32768 : LIST EN

tcp 0 0 :sunrpc : LIST EN

tcp 0 0 :auth : LIST EN

tcp 0 0 localhostlocaldomain:ipp : LIST EN

tcp 0 0 localhostlocaldomain:smtp : LIST EN

tcp 0 0 :ssh : LIST EN

tcp 0 0 ::ffff:1921681178:ssh ::ffff:1921681175:1237 ESTA BLISHED

udp 0 0 :32768 :

udp 0 0 :955 :

udp 0 0 :sunrpc :

udp 0 0 :ipp :

如上所示,加入 -a(all)就可以了。将所有在机器上 (监听 Listem)或者是(已建立连接的)的服务通通列出的意思。不过,服务的名称已经使用 /etc/services 里面的名称了,而不是使用 port 的数字!目前我主机上面的服务共开放了:sunrpc、auth、ssh、ipp、smtp等服务(就是 Listen的那几个服务)至于已经建立的服务就只有 SSH 这一个!那如果我想知道开放了哪些端口号呢?呵呵,就使用下面的命令吧!

复制内容到剪贴板

代码:

[root@localhost ~]# netstat -an

Active Internet connections (servers and established)

Proto Recv-Q Send-Q Local Address Foreign Address State

tcp 0 0 0000:32768 0000: LISTEN

tcp 0 0 0000:111 0000: LISTEN

tcp 0 0 0000:113 0000: LISTEN

tcp 0 0 127001:631 0000: LISTEN

tcp 0 0 127001:25 0000: LISTEN

tcp 0 0 :::22 ::: LISTEN

tcp 0 52 ::ffff:1921681178:22 ::ffff:1921681175:1237 ESTABLISHED

udp 0 0 0000:32768 0000:

udp 0 0 0000:955 0000:

udp 0 0 0000:111 0000:

udp 0 0 0000:631 0000:

如上所示,我接通的服务只有22这一个,而其它的你可以参照上面的命令输出结果来对照,所以你就可以知道:smtp为25端口。因此,通过使用此命令,就可以轻易的子解目前主机的运作状况与服务状态了。当然了,netstat的用途不止于此,你可以使用 man netstat 来查阅一番喔!相信对你的主机会有更大的了解。

相信有不少的朋友都会有这个困扰,就是要怎样删除已经建立的联机呢?因为总有些不速之客会连到您的主机来进行一些破坏的工作!或者是您根本不想让对方联机过来!呵呵!还记得 鸟哥的 Linux 私房菜--基础学习篇内的资源管理 里面提到的几个常用的指令吧!?那就是找出那个联机程序的 PID ,然后给他 kill 掉就是了!简单呀!不过,大问题是『我要怎样找出联机的 PID 呀!?』呵呵!由于 PID 的管理与整体的系统资源有关,这个时候,虽然可以使用 netstat 来观察 PID ,不过只有 root 可以观察到联机状态的 PID 号码呦!( 注:还记得资源管理提及的 PID 概念吗?就是说,在 Linux 系统之内,每个『程序』系统都会给予一个号码来管理!这个就是 PID 啰!)

 

复制内容到剪贴板

代码:

[root@test root]# netstat -ap

Active Internet connections (servers and established)

Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name

tcp 0 0 :ssh : LISTEN 32149/sshd

tcp 0 284 14011614119:ssh 192168111:1391 ESTABLISHED 24751/sshd

Active UNIX domain sockets (servers and established)

Proto RefCnt Flags Type State I-Node PID/Program name Path

unix 7 [ ] DGRAM 944 509/syslogd /dev/log

unix 2 [ ] DGRAM 3035915 16648/xinetd

unix 2 [ ] DGRAM 739227 5951/pppoe

unix 2 [ ] DGRAM 739189 5949/pppd

unix 2 [ ] DGRAM 1070 628/crond

unix 2 [ ] DGRAM 953 514/klogd

unix 2 [ ] STREAM CONNECTED 690 1/init [3]

 

看到上面那个斜体字的联机建立的网络状态了吗?嘿嘿!最后面一栏就是显示那个 PID/Program name ,那个 PID ( 上面是 24751 )也就是我们要来砍掉的啦!这个时候,如果要将该联机砍掉时,就直接以 kill 来做吧!

 

复制内容到剪贴板

代码:

[root@test root]# kill -9 24751

 

这样就能将该联机给他『踢出去』您的主机啦!! ^_^""

在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://wwwianaorg/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

  Linux中如何查看8080端口是否被占用在Linux系统中,想要查看哪些端口被占用可通过命令进行查询,比如:lsof、netstat命令。其中netstat命令是最为常见的,本文将为大家重点介绍一下,不了解的小伙伴一定要认真看完!

 输入命令:netstat -tln | grep 8080,来查看8080端口情况,按回车执行。

 Linux netstat命令用于显示网络状态。

 利用netstat指令可让你得知整个Linux系统的网络情况。

 语法

 netstat [-acCeFghilMnNoprstuvVwx][-A<网络类型>][--ip]

 参数

 -a或--all:显示所有连线中的Socker。

 -A<网络类型>或--<网络类型>:列出该网络类型连线中的相关地址。

 -c或--continuous:持续列出网络状态。

 -C或--cache:显示路由器配置的快取信息。

 -e或--extend:显示网络其他相关信息。

 -F或--fib:显示路由缓存。

 -g或--groups:显示多重广播功能群组组员名单。

 -h或--help:在线帮助。

 -i或--interfaces:显示网络界面信息表单。

 -l或--listening:显示监控中的服务器的Socket。

 -M或--masquerade:显示伪装的网络连线。

 -n或--numeric:直接使用IP地址,而不通过域名服务器。

 -N或--netlink或--symbolic:显示网络硬件外围设备的符号连接名称。

 …………

 参数较多,就不一一列举了!

      很多朋友都想知道linux怎么查看端口开启?下面就一起来了解一下吧!

      linux查看端口开启

      1、打开linux系统,在linux的桌面的空白处右击。

      2、在弹出的下拉选项里,点击打开终端。

      3、进入终端窗口使用netstat-aptn命令,就可以查看到所有开启的端口号。

      以上就是的分享,希望能帮助到大家。

      本文章基于ThinkpadE15品牌、centos7系统撰写的。

前言

如何确定端口是否在Linux或类unix系统下占用怎么检查哪些端口正在Linux服务器上被占用Linux系统如何使用命令行检查端口是否已经在占用

查询哪些端口正在服务器的网络接口上被占用是非常重要的工作。您需要查询打开端口以检测入侵。除了入侵之外,出于故障排除的目的,可能有必要检查服务器上的其他应用程序是否已经使用了某个端口。例如,您可以在同一系统上安装Apache和Nginx服务器。因此,有必要了解Apache或Nginx是否使用TCP端口80或443。本教程提供了使用netstat、nmap和lsof命令查询正在使用的端口并查看正在使用该端口的应用程序的步骤。

如何查询端口是否在使用中:

检查Linux上被占用的端口和应用程序:

Step1: 打开终端

Step2: 执行以下任意一条命令查看被占用的端口

查看端口22是否被占用:

较新版本的Linux使用以下查询命令:

方法1: 使用lsof命令查询占用端口

先安装lsof命令

RHEL/CentOS系统:

Debian/Ubuntu系统安装lsof命令

使用语法如下

OpenBSD

看到类似这样的输出结果:

sshd是进程名字

TCP 22表示sshd进程占用了TCP 22端口,正在监听中(LISTEN)

1243表示sshd进程号

方法二:使用netstat查询被占用的端口号

较新的Linux发行版已经不再默认集成netstat命令,而是使用新命令ss取代了。

如果要使用netstat命令,需要手动安装net-tools套件:

RHEL/CentOS系统安装net-tools套件,执行以下命令:

Debian/Ubuntu系统执行以下命令:

您可以使用netstat查询被占用的端口和应用程序,如下所示。

执行以下命令查询:

在Linux上,netstat命令已经废弃了一段时间。因此,你需要使用ss命令如下:

或者:

其中ss命令选项如下:

-t : 只显示Linux上的TCP套接字

-u : 在Linux上只显示UDP套接字

-l : 监听套接字。例如,TCP端口22由SSHD服务器打开。

-p : 列出打开套接字的进程名

-n : 不要解析服务名称,即不要使用DNS

FreeBSD/MacOS X netstat 语法

FreeBSD/MacOS X查询被占用的端口

或者

OpenBSD netstat 语法

OpenBSD查询被占用的端口

或者

方法三:使用`nmap`命令查询Linux被占用的端口

默认情况下,Linux发行版并没有默认安装nmap命令,

CentOS系统安装nmap

Ubuntu系统安装nmap

使用nmap查询本机被占用的端口

查询Linux系统被占用的UDP端口

查询Linux系统被占用的TCP端口

你可以同时查询被占用的TCP和UDP端口

结论:

本教程解释了如何在Linux系统上使用命令行查询TCP或者UDP端口是否被占用。有关更多信息,请参见nmap命令和lsof命令页面

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » Linux如何检查远程服务器中端口是否打开?

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情