如何在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 會話的命令列工具。每個命令都有其自身的特定選項和輸出格式,因此您可以選擇最適合您需求的命令。建議在使用每個命令之前查閱其手冊頁,以確保您使用的是正確的選項並獲得預期的結果。