如何正确检查 SSH 在 Linux 计算机上侦听的网络接口?

And*_*ili 3 linux ssh netstat oracle-linux redhat-enterprise-linux

我不是系统工程师或网络专家(我更多的是软件开发人员),我有以下问题需要解决。

我正在 Oracle Linux 机器上工作(基本上它应该是基于 RedHat 的)。

我必须检查 SSH 在此虚拟机上侦听哪些网络实例。我使用此链接作为参考:https ://access.redhat.com/solutions/260463

它显示了如何使用此命令(这是之前的网站示例):

$ grep sshd netstat
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      0          12412      3522/sshd           off (0.00/0/0)
Run Code Online (Sandbox Code Playgroud)

问题是,如果我尝试在我的计算机上复制相同的命令,我会收到以下错误消息:

[root@zabbix-db ~]# grep sshd netstat
grep: netstat: No such file or directory
Run Code Online (Sandbox Code Playgroud)

为什么?怎么了?我缺少什么?我怎样才能正确执行这项检查?这个错误的确切含义是什么(它说的是一个不存在的文件,但根据我的理解,我是在 netstat 输出上进行 grep,而不是在文件上)

use*_*686 6

\n

它谈到了一个不存在的文件,但是,根据我的理解,我正在 grep 上 netstat 输出而不是文件上

\n
\n

不,您实际上正在 grep 一个名为netstat.

\n

实际运行“netstat”作为命令,将其输出提供给 grep,您需要使用管道:

\n
netstat | grep sshd\n
Run Code Online (Sandbox Code Playgroud)\n

请注意,netstat 的默认输出实际上根本不会显示侦听套接字 \xe2\x80\x93,您需要指定-l( --listening) 将它们包含在输出中。另外,它默认不会提及程序名称;该列是通过-p( --processes) 选项添加的。最后,如果您想查看实际的 IP 地址,请添加-n(--numeric ) 以禁用“反向 DNS”查找。

\n
netstat --listening --processes --tcp --numeric | grep sshd\nnetstat -l -p -t -n | grep sshd\nnetstat -lptn | grep sshd\n
Run Code Online (Sandbox Code Playgroud)\n

\xe2\x80\xa6to 仅显示侦听 TCP 套接字及其程序名称,不进行反向 DNS 查找。

\n

这同样适用于ss,许多 Linux 发行版现在都将其作为 netstat 的替代品:\xc2\xb9

\n
ss -lptn | grep sshd\n
Run Code Online (Sandbox Code Playgroud)\n
\n

\xc2\xb9 “netstat”没有什么特别的问题,但它作为“net-tools”包的一部分出现,该包本身非常不受维护,而且它的其他包工具,例如“ifconfig”,有严重的问题,因此该软件包为一个整体常常不再安装。

\n