如何在 Linux 上列出所有已连接的 SSH 会话
简介
安全外壳协议 (SSH) 是一种常用的协议,用于安全地远程访问 Linux 服务器。当多个用户通过 SSH 连接到 Linux 服务器时,列出所有已连接的 SSH 会话对于管理或监控非常有用。本文将讨论如何使用各种命令行工具列出 Linux 上所有已连接的 SSH 会话。
使用 who 命令列出已连接的 SSH 会话
who 命令是一个简单且广泛使用的命令行工具,用于列出 Linux 系统上已登录的用户。要列出所有已连接的 SSH 会话,可以使用"who -a" 命令。-a" 选项会显示所有用户,包括那些未通过系统控制台登录的用户。结果将显示您的用户名、终端以及登录日期和时间。
$ who -a root pts/0 2020-12-19 14:20 (10.0.0.1) user1 pts/1 2020-12-19 15:25 (10.0.0.2) user2 pts/2 2020-12-19 14:30 (10.0.0.3)
在本例中,输出显示当前有三个用户已连接:"root"、"user1"和"user2",以及他们连接的端点和连接的 IP 地址。
使用 w 命令连接的 SSH 会话列表
另一个可用于列出已连接 SSH 会话的命令行工具是"w"。此命令显示当前登录到系统的用户信息,以及每个用户正在运行的进程。要列出所有已连接的 SSH 会话,可以使用"w -h"命令,该命令省略标头,仅显示进程。
$ w -h root pts/0 14:20 2.00s 0.00s ssh 10.0.0.1 user1 pts/1 14:25 1.00s 0.00s ssh 10.0.0.2 user2 pts/2 14:30 1.00s 0.00s ssh 10.0.0.3
在本例中,输出结果显示了当前已连接的三个用户、他们连接的终端以及他们连接的 IP 地址。
使用 last 命令连接的 SSH 会话列表
last 命令用于显示最近登录系统的用户。此命令也可以与 latest 的"-i"命令一起使用,列出已连接的 SSH 会话。
$ last -i root pts/0 10.0.0.1 Sun Dec 19 14:20 - 14:25 (00:05) user1 pts/1 10.0.0.2 Sun Dec 19 14:25 - 14:30 (00:05) user2 pts/2 10.0.0.3 Sun Dec 19 14:30 - 14:35 (00:05)
在此示例中,输出结果显示了当前连接的三个用户、他们连接的终端、连接的 IP 地址以及会话时长。
使用 `who -u` 命令连接的 SSH 会话列表
您还可以使用 `who -u` 命令列出所有已连接的 SSH 会话。此命令会显示用户名、终端以及登录日期和时间。
$ who -u root pts/0 2020-12-19 14:20 (10.0.0.1) user1 pts/1 2020-12-19 14:25 (10.0.0.2) user2 pts/2 2020-12-19 14:30 (10.0.0.3)
"-u"选项会显示用户及其空闲时间,但不显示 IP 地址。因此,如果您需要 IP 信息,可以将此命令与"-i"选项结合使用,该选项将显示 IP 地址。
$ who -u -i root pts/0 2020-12-19 14:20 (10.0.0.1) . . . . . . . . . . . . . . . user1 pts/1 2020-12-19 14:25 (10.0.0.2) . . . . . . . . . . . . . . . user2 pts/2 2020-12-19 14:30 (10.0.0.3) . . . . . . . . . . . . . . .
使用 ss 命令连接的 SSH 会话列表
另一个可以用来列出已连接 SSH 会话的命令是 ss。此命令类似于 netstat,但效率更高,用于转储套接字统计信息。要列出所有已连接的 SSH 会话,可以使用 "ss -t -a" 命令。
$ ss -t -a | grep ssh
tcp ESTAB 0 0 10.0.0.1:ssh 10.0.0.1:46754 users:(("sshd",pid=9987,fd=3))
tcp ESTAB 0 0 10.0.0.2:ssh 10.0.0.2:47754 users:(("sshd",pid=9987,fd=3))
tcp ESTAB 0 0 10.0.0.3:ssh 10.0.0.3:48754 users:(("sshd",pid=9987,fd=3))
`"-t"选项仅显示TCP连接,`"-a"选项显示所有套接字。`grep` 命令用于过滤输出,仅显示SSH连接。
结论
本文讨论了几个用于在Linux上列出已连接的SSH会话的命令行工具。每个命令都有其特定的选项和输出格式,因此您可以根据自己的需求选择最合适的命令。始终建议您在使用每个命令之前查阅其手册页(man page),以确保您使用正确的选项并获得预期的结果。
相关文章
有用资源
linux 参考教程 - 该教程包含有关 linux 的更多信息:https://www.cainiaomax.com/linux/

