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

更新于:2023年1月20日

35K+ 次浏览

启动您的职业生涯

通过完成课程获得认证

开始
广告