当我 ssh 到我的媒体服务器时,我启动了一堆未经请求的进程:
/usr/lib/systemd/systemd --user
/usr/bin/dbus-broker-launch --scope user
dbus-broker
/usr/bin/pulseaudio --daemonize=no --log-target=journal
当然,如果您要启动 GUI 会话,您只需要pulseaudio 和dbus。
我可以杀死 systemd,那些进程也会死掉——它似乎不会伤害我的 ssh 会话中的任何东西。
更糟糕的是,当我注销时这些进程并没有终止。
我该如何阻止这个?
我可以
systemctl --user disable pulseaudio.service dbus-broker.service
...但是如果我进行 GUI 登录(例如在显示器上或在无头摇摆会话中),我将需要这些。
我本以为世界各地的系统管理员会抓住他们的干草叉,向 Castle Systemd 进军,因为他们对简单的 ssh 登录创建的虚假进程感到愤怒 - 更糟糕的是,让它们在注销时继续运行。
这是在 fedora-33 上
答案1
用户会话的启动是由调用引起的pam_systemd.so
(在 debian 系统上,这是由中的/etc/pam.d/common-session
一行引用的)。@include common-session
/etc/pam.d/sshd
放入UsePAM no
你的/etc/ssh/sshd_config
以防止sshd
使用整个可插拔的身份验证模块机制systemd
挂钩。
或者,您可以仅注释掉@include common-session
中提到的行/etc/pam.d/sshd
。