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

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

#1 楼

 netstat -pln


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

评论


为了使-p正常工作,您需要以root身份运行此命令,因此应使用sudo netstat -tpln,否则,除非您的进程正在侦听给定端口的用户,否则process列将不会特别有用。

– cjc
2012年2月6日18:21

#2 楼

lsof -i -P

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

评论


这应该是正确的答案。默认情况下未安装Netstat

–何塞
18/12/21在14:04

#3 楼

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

我每天,甚至每小时都使用它。 “ lsof” hack更具可移植性(也可在Solaris上使用),但是在Debian上,它不是必不可少的软件包,必须安装它。

评论


是的,并通过sudo运行它。

–马丁·海默斯(Martijn Heemels)
2012年2月7日在23:09

我的朋友教我记住该命令,并使用花名netstat -tulpen标记e提供了更多信息。

– Deele
2012-12-15 14:37



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

–詹森
18年11月11日在20:58

#4 楼

我是netstat -ntlplsof -i的忠实粉丝,都已经提到过。

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

调用类似于:

ss -l


最好有命令和标志选项。

评论


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

–oon
16年11月14日在1:23

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

– dmourati
17年6月29日在4:14

#5 楼

您可以执行以下操作:

netstat -an | egrep 'Proto|LISTEN'


,或者简单地:

netstat -anl


,这将为您提供所有监听插座系统。

评论


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

–voretaq7
2012年2月6日在22:31

#6 楼

侦听端口与从外部打开的端口不同。您需要考虑防火墙。如果您尝试从另一台计算机尝试nmap之类的程序,那么您将能够看到打开的端口未被防火墙阻止。

#7 楼

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

评论


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

–埃里克
2012年2月6日19:10

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

– Zoredache
2012年2月6日在22:55

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

– KingsInnerSoul
16年4月1日在14:37

#8 楼

我更喜欢使用:

netstat -antp 
lsof -i 
netstat -lptu
netstat -tulpn