web-dev-qa-db-ja.com

すべてのユーザーに対してサービスとしてユニットファイルを実行する方法

私は、各ユーザーの各sshセッションでssh-agentを実行しようとしています(これらの特権でserAがあり、serBであるとしましょう)。

そのために、 this stack-overflow answer に基づいてユニットファイルを作成しました

サービスを/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に追加しました

その後、もちろん、セッションを再開しました。

問題:このアプローチはserAで機能しますが、serBでは機能しません。

デバッグ:

環境変数:SSH_AUTH_SOCKはuserAに対して正しく設定されているようです

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

しかし、私が得るuserBではありません:

$ echo $SSH_AUTH_SOCK
/ssh-agent.socket

Ubuntu 16.04.3 LTS、4.4.0-112-generic、OpenSSH_7.2p2を使用しています

ヒントを事前にありがとうございます。

1
user2804070

Ask Ubuntuへようこそ。

システム全体のユーザーユニットは、/etc/systemd/userに配置する必要があります。

それらを/etc/systemd/systemに配置しました。これらはrootユーザーとしてのみ実行されます。

0
Mark Stosberg