Linux
為什麼執行 sudo systemctl stop ssh over ssh 不會立即終止 ssh 會話
這個問題源於好奇,但假設我目前與遠端電腦有一個 ssh 會話,我執行以下命令:
sudo systemctl stop ssh
並在執行後:
systemctl status ssh
驗證服務的狀態,它似乎是不活動的(死)為什麼我仍然能夠遠端執行任何命令?
再次,這不是一個正式的問題,我只是好奇
感謝您的時間
當您連接時,SSH 守護程序(例如
sshd
)至少會分叉一次。從現在開始,您的連接由一個單獨的程序處理,而不是監聽守護程序本身。
systemctl stop ssh
停止監聽守護程序,因此無法建立新的 SSH 連接。現有的連接能夠倖存,因為分叉的程序能夠倖存。這是來自的範例片段
pstree -u
:systemd-+-… … |-sshd---sshd---sshd(kamil)---bash---… …
第一個
sshd
是守護程序。第二個是分叉提升的程序,仍然保留根的權力。第三個已經放棄了根的力量,它屬於我(kamil)。停止(殺死)守護程序不會影響其他兩個(是的,我已經測試過)。