Linux

為什麼執行 sudo systemctl stop ssh over ssh 不會立即終止 ssh 會話

  • May 18, 2022

這個問題源於好奇,但假設我目前與遠端電腦有一個 ssh 會話,我執行以下命令:

sudo systemctl stop ssh

並在執行後:

systemctl status ssh

驗證服務的狀態,它似乎是不活動的(死)為什麼我仍然能夠遠端執行任何命令?

再次,這不是一個正式的問題,我只是好奇

感謝您的時間

當您連接時,SSH 守護程序(例如sshd)至少會分叉一次。從現在開始,您的連接由一個單獨的程序處理,而不是監聽守護程序本身。

systemctl stop ssh停止監聽守護程序,因此無法建立新的 SSH 連接。現有的連接能夠倖存,因為分叉的程序能夠倖存。

這是來自的範例片段pstree -u

systemd-+-…
       …
       |-sshd---sshd---sshd(kamil)---bash---…
       …

第一個sshd是守護程序。第二個是分叉提升的程序,仍然保留根的權力。第三個已經放棄了根的力量,它屬於我(kamil)。停止(殺死)守護程序不會影響其他兩個(是的,我已經測試過)。

引用自:https://unix.stackexchange.com/questions/703040