如何在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 命令用于显示最近登录到系统的用户。此命令还可以使用最新的“-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 会话的命令行工具。每个命令都有其自身的特定选项和输出格式,因此您可以选择最适合您需求的命令。建议在使用每个命令之前查阅其手册页,以确保您使用的是正确的选项并获得预期的结果。