systemdが管理するスクリプトで起動されたSSHエージェントを終了するには?

systemdが管理するスクリプトで起動されたSSHエージェントを終了するには?

ユーザーがログインしたときにssh-agentインスタンスを起動したいと思います。また、エージェントが作成された後、エージェントにいくつかの特定のキーを追加したいと思います。 systemdを介してエージェントを起動および停止できる必要があります。ログアウトすると、ssh-agentインスタンスを終了する必要があります。

これを達成するために、システムサービスファイルをどのように作成しますか?

ベストアンサー1

次は私のために働いた。

たくさん読んで、もう一度読んで、もう一度読んだ結果、ssh-agentフォアグラウンドで実行できることがわかり、systemdがそれを管理できるようになりました。また、ディレクティブを無制限に追加できることを発見したExecStartPostので、これによりエージェントに特定のキーを追加できると考えました。

効果はとても良いです。唯一の奇妙なことは、サービスを明示的に停止した後に失敗した状態になることです。もっと読むと、ssh-agentプロセスは状態2で終了したため、0ではないため、SuccessExitStatus2に設定する必要があります。これで停止すると、その状態がinactive期待どおりに表示されます。

[Unit]
Description=Project SSH Agent

[Service]
Type=simple
Environment=PROJECT_SSH_AGENT=%t/project-ssh-agent.socket
ExecStart=/usr/bin/ssh-agent -D -a "$PROJECT_SSH_AGENT"
ExecStartPost=echo $SSH_AUTH_SOCK
ExecStartPost=echo $PROJECT_SSH_AGENT
ExecStartPost=/bin/sh -c "SSH_AUTH_SOCK=$PROJECT_SSH_AGENT /usr/bin/ssh-add /home/lpeabody/.ssh/id_rsa.project"
SuccessExitStatus=2

[Install]
WantedBy=default.target

おすすめ記事