如何在Debian上列出我的开放端口?


58

在Debian服务器上显示打开端口列表的命令是什么?

我试过了,netstat -a | egrep 'Proto|LISTEN'但我想更具体地列出端口号。

Answers:


86
 netstat -pln

-l将列出监听端口,-p还将显示进程,-n将显示端口号而不是名称。添加-t到仅显示TCP端口。


12
为了使-p正常工作,您需要以root用户身份运行,所以sudo netstat -tpln,否则process列将不是特别有用,除非您是其进程正在侦听给定端口的用户。
cjc 2012年

21

lsof -i -P

检查手册页,lsof因为其中不乏选项。-P列出端口号,而不是从/etc/services“以root身份运行”中获取的名称,但是,这将为您提供所有活动网络连接及其状态(侦听,已建立等)的列表。


这应该是正确的答案。用netstat是不是默认安装
何塞

10

几乎每个人都想要的是(TCP和UDP)netstat -tunlp

我每天(也许每小时)使用它。'lsof'hack更具移植性(也可在Solaris上运行),但是在Debian上它不是必需的软件包,必须安装它。


是的,并通过运行它sudo
Martijn Heemels,2012年

1
我的朋友教我记住带有花名“ netstat -tulpenFlag”的命令,它e提供了更多信息。
Deele 2012年

1
而现在,在2018年,我刚买的Debian盒子没有,netstat但确实有lsof。:)
Jason

10

我是netstat -ntlp和的忠实粉丝lsof -i,两者都已经提到过。

对我来说,一个新命令是ss

调用就像:

ss -l

在命令和标志方面,最好有选项。


1
选项特别好,因为mongo docker容器(可能还有许多其他容器)具有ss而不是netstat或lsof
Foon 2016年

我开始将其用作面试问题。大概问了40个不同的人。到目前为止,还没有人提到ss。我像OP一样询问,然后如果他们回答,我说:“好吧,我拿走X,现在您该怎么做。” 直到想法用尽。
dmourati

6

你可以做:

netstat -an | egrep 'Proto|LISTEN'

或者简单地:

netstat -anl

这将为您提供系统上的所有侦听套接字。


2
这将是最佳解决方案(其中“最佳”被定义为“在最广泛的系统上运行”(BSD,Linux,AIX,Solaris,我相信是HP-UX))
voretaq7

0

TechRepulic有一篇不错的文章,您可以在这里找到。它具有与上面列出的命令类似的命令,但也有一些变化。我也强烈建议使用nmap对有问题的计算机进行端口扫描,以便您可以从外部角度查看哪些端口已打开并正在侦听。


你能告诉我为什么这被否决了吗?正如我所提供的那样,上面提供了许多解决方案的链接,这些解决方案也得到了认可,同时也提供了进行外部扫描的不同角度。谢谢。
埃里克

8
我没有拒绝投票,但是在像大多数堆栈交换这样的serverfault上,我们通常希望您将答案放在这里,而不仅仅是到其他地方的链接。链接会随着时间而消失,但是我们希望当链接消失时,SF上的内容仍然有价值。
Zoredache

上面文章链接中仅有的代码行是sudo nmap -T4 -A -v 192.168.1.1/24其他所有内容-执行此操作-无需任何详细信息即可执行操作...就像阅读书的封底一样-很多单词没有肉。
KingsInnerSoul '16


0

我更喜欢使用:

netstat -antp 
lsof -i 
netstat -lptu
netstat -tulpn
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.