ユーザーがログインしたときにssh-agentインスタンスを起動したいと思います。また、エージェントが作成された後、エージェントにいくつかの特定のキーを追加したいと思います。 systemdを介してエージェントを起動および停止できる必要があります。ログアウトすると、ssh-agentインスタンスを終了する必要があります。
これを達成するために、システムサービスファイルをどのように作成しますか?
ベストアンサー1
次は私のために働いた。
たくさん読んで、もう一度読んで、もう一度読んだ結果、ssh-agent
フォアグラウンドで実行できることがわかり、systemdがそれを管理できるようになりました。また、ディレクティブを無制限に追加できることを発見したExecStartPost
ので、これによりエージェントに特定のキーを追加できると考えました。
効果はとても良いです。唯一の奇妙なことは、サービスを明示的に停止した後に失敗した状態になることです。もっと読むと、ssh-agent
プロセスは状態2で終了したため、0ではないため、SuccessExitStatus
2に設定する必要があります。これで停止すると、その状態が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