停止時にSystemdサービスssh-agentが失敗する

停止時にSystemdサービスssh-agentが失敗する

contentというファイルがあります~/.config/systemd/user/ssh-agent.service

[Unit]
Description=SSH key agent

[Service]
Type=simple
Environment=SSH_AUTH_SOCK=%t/ssh-agent.socket
Environment=SYSTEMD_LOG_LEVEL=debug
ExecStart=/usr/bin/ssh-agent -D -a $SSH_AUTH_SOCK

[Install]
WantedBy=default.target

サービスを開始して ssh-agent を使用できますが、次のようにサービスを停止するとsystemctl --user stop ssh-agentサービスが失敗します。

Dec 08 17:13:11 box systemd[571]: Stopping SSH key agent...
Dec 08 17:13:11 box systemd[571]: ssh-agent.service: Main process exited, code=exited, status=2/INVALIDARGUMENT
Dec 08 17:13:11 box systemd[571]: ssh-agent.service: Failed with result 'exit-code'.
Dec 08 17:13:11 box systemd[571]: Stopped SSH key agent.

デバイスが「失敗」状態で表示されている理由は不明です。設定を使用するとKillMode=noneエラーは消えますが、もちろんエージェントは終了しません。失敗の原因は何か知っていますか?また、ssh-agent呼び出し内で設定と削除を試みましたType=forking-D

答え1

ssh-agent通常、終了コード 2 で終了します。ここ。あなたはできますExecStart ステートメントの前に次を付けます。-ゼロ以外の終了コードは無視されます。

ExecStart=-/usr/bin/ssh-agent -D -a $SSH_AUTH_SOCK

答え2

ここでの問題は失敗ではなくsystemctl --user status <svc>出力です。

status=2/INVALIDARGUMENT

このエラーは$ SSH_AUTH_SOCK変数で発生するため、バインディングアドレスに問題があります。削除してベースアドレスを試してください-a ${SSH_AUTH_SOCK}

失敗した状態はまだ存在します。これを削除するには、戻りコードのために停止して開始する完全なデバイスソリューションを実装する必要があります。

関連情報