今天我們簡單介紹一下如何踢掉其他透過 ssh 連接到系統中的使用者。
Pixelated word Linux made from cubes, mosaic pattern
如果你透過 ssh 登入了一個遠端 Linux 系統,你只需要使用 exit 指令即可登出 ssh。那麼,如果你想要登出其他透過 ssh 登入系統中的使用者呢?
在 ssh 會話中登出使用者
首先,檢查 Linux 系統中已登入的使用者清單。要實現這一點有多種方法,在這裡我們使用 who 命令,連同 -u 選項,會顯示登入系統中 shell 會話的進程 ID:
who -u
其輸出如下圖所示:
root@localhost:~# who -u abhishek pts/0 2021-04-05 09:25 00:01 31970 (223.180.180.107) prakash pts/1 2021-04-05 09:26 . 32004 (223.180.180.107) root pts/2 2021-04-05 09:26 . 32039 (223.180.180.107)
那麼接下來,假設我們的任務是從 ssh 會話中踢除使用者 prakash,其 shell 會話的進程 ID 為 32004。完成後該用戶將會斷開連線。
為此,可以使用 kill 指令發送 SIGHUP 訊號,用於報告使用者的終端機已經斷開,也可以有效的斷開會話中所有程序與控制終端的連線。
sudo kill -HUP 32004
當然,要執行這個操作,你需要是 root 使用者或具有 sudo 權限。
作為一個相對友好的習慣,在踢掉用戶之前,最好先給他發訊息。發送訊息可以使用 write 指令,如下所示:
echo "Your session will end in 2 minutes. Save your work!" | write prakash pts/2
那麼,如果發送 SIGNHUP 訊號不管用怎麼辦?也可以強制終止 ssh 會話。
強制終止 ssh 會話
如果 SIGHUP 訊號不起作用,則可以發送 SIGKILL 訊號。
sudo kill -9 32004
如果有多個 ssh 會話,可以從所選會話中登出使用者
如果統一使用者從多個系統或終端登錄,上述操作只會影響我們要終止的會話,它不會將使用者的所有會話都踢除出去。
例如,當ssh 會話因某些原因(如網路斷開)而掛斷,此時我們可以終止終端,並從新終端開啟另一個ssh 會話,這種情況下,我們可以看到自己登入系統兩次。
這個時候,我們需要關閉不在活動的會話。
在 who 指令的輸出中,我們可以根據登入的時間來判斷要踢除哪個使用者。當然也有可能會因為錯誤的判斷而把自己踢掉,不過也沒關係,可以再重新登入。
以上是在Linux中如何註銷其他 SSH 用戶的詳細內容。更多資訊請關注PHP中文網其他相關文章!