我正在尝试为每个用户运行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_config
了export 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 用户身份运行。