Linux如何检查远程服务器中端口是否打开?
这个非常简单,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命令页面
0条评论