如何为所有用户运行单元文件作为服务

如何为所有用户运行单元文件作为服务

我正在尝试为每个用户运行ssh-agent每个 ssh 会话(假设我有用户A具有 root 权限并用户B没有这些特权)。

为此,我创建了一个基于这个 stackoverflow 答案

我将服务放在/etc/systemd/system/run-ssh-agent.service

[Unit]
Description=SSH key agent

[Service]
Type=forking
Environment=SSH_AUTH_SOCK=/run/ssh-agent.socket
ExecStart=/usr/bin/ssh-agent -a $SSH_AUTH_SOCK

[Install]
WantedBy=multi-user.target

我还AddKeysToAgent yes添加/etc/ssh/ssh_configexport SSH_AUTH_SOCK="$XDG_RUNTIME_DIR/ssh-agent.socket"/etc/bash.bashrc

然后,当然,我重新启动了会话。

问题: 这种方法适用于用户A但不是用户B

调试:

环境变量:SSH_AUTH_SOCK对于用户 A 来说似乎设置正确

$ echo $SSH_AUTH_SOCK
/run/user/1006/ssh-agent.socket

但对于用户 B 则不是,我得到:

$ echo $SSH_AUTH_SOCK
/ssh-agent.socket

我在 Ubuntu 16.04.3 LTS、4.4.0-112-generic、OpenSSH_7.2p2 上

提前感谢您的任何提示。

答案1

欢迎来到 Ask Ubuntu。

Systemd 范围的用户单元应该放置在 中/etc/systemd/user

您将它们放置在中/etc/systemd/system,它们只能以 root 用户身份运行。

相关内容