如何在Linux上列出所有连接的SSH会话

如何在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地址。

用最后一条命令连接的SSH会话的列表

最后一条命令是用来显示最近登录过系统的用户。这个命令也可以用来列出使用最新的”-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会话。每个命令都有其特定的选项和输出格式,所以你要选择一个最适合你需要的命令。在使用每个命令之前,建议先查阅其手册,以确保你使用了正确的选项并得到了预期的结果。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

Linux 基础