From 534b5bfb5dd2e0208772519aaf483ce692143f75 Mon Sep 17 00:00:00 2001 From: Steve Traylen Date: Tue, 30 May 2023 20:23:21 +0200 Subject: [PATCH] Add systemd user units for ssh-agent With the addition of this ``` systemctl enable --now --user ssh-agent.socket ``` maintains an ssh-agent via a systemd user socket and service. The unit files were taken from Fedora. --- PKGBUILD | 14 ++++++++++++-- ssh-agent.service | 19 +++++++++++++++++++ ssh-agent.socket | 14 ++++++++++++++ 3 files changed, 45 insertions(+), 2 deletions(-) create mode 100644 ssh-agent.service create mode 100644 ssh-agent.socket diff --git a/PKGBUILD b/PKGBUILD index f86aaee..4866898 100644 --- a/PKGBUILD +++ b/PKGBUILD @@ -39,6 +39,8 @@ source=( 'sshd.service' 'sshd.conf' 'sshd.pam' + 'ssh-agent.service' + 'ssh-agent.socket' ) sha256sums=('e9baba7701a76a51f3d85a62c383a3c9dcd97fa900b859bc7db114c1868af8a8' 'SKIP' @@ -46,14 +48,20 @@ sha256sums=('e9baba7701a76a51f3d85a62c383a3c9dcd97fa900b859bc7db114c1868af8a8' 'e5305767b2d317183ad1c5022a5f6705bd9014a8b22495a000fd482713738611' 'e40f8b7c8e5e2ecf3084b3511a6c36d5b5c9f9e61f2bb13e3726c71dc7d4fbc7' '4effac1186cc62617f44385415103021f72f674f8b8e26447fc1139c670090f6' - '64576021515c0a98b0aaf0a0ae02e0f5ebe8ee525b1e647ab68f369f81ecd846') + '64576021515c0a98b0aaf0a0ae02e0f5ebe8ee525b1e647ab68f369f81ecd846' + '5a9594548928fce7e8fc707c3a3b45c560b7f16473bbf73a00357184fadca61b' + 'd09197d3891555cbee379541ff8cc439a8456722f0e8cb131966d4d12b0f2c2c' + ) b2sums=('45578edf98bba3d23c7cefe60d8a7d3079e7c6676459f7422ace7a2461ab96943fbcadb478633a80f40bc098f2435722850b563714adb78b14922be53cb5753d' 'SKIP' '29e1a1c2744e0234830c6f93a46338ea8dc943370e20a24883d207d611025e54643da678f2826050c073a36be48dfdc7329d4cfb144c2ff90607a5f10f73dc59' '09fad3648f48f13ee80195b90913feeba21240d121b1178e0ce62f4a17b1f7e58e8edc22c04403e377ab300f5022a804c848f5be132765d5ca26a38aab262e50' '07ad5c7fb557411a6646ff6830bc9d564c07cbddc4ce819641d31c05dbdf677bfd8a99907cf529a7ee383b8c250936a6423f4b4b97ba0f1c14f627bbd629bd4e' '27571f728c3c10834a81652f3917188436474b588f8b047462e44b6c7a424f60d06ce8cb74839b691870177d7261592207d7f35d4ae6c79af87d6a7ea156d395' - '557d015bca7008ce824111f235da67b7e0051a693aaab666e97b78e753ed7928b72274af03d7fde12033986b733d5f996faf2a4feb6ecf53f39accae31334930') + '557d015bca7008ce824111f235da67b7e0051a693aaab666e97b78e753ed7928b72274af03d7fde12033986b733d5f996faf2a4feb6ecf53f39accae31334930' + '3df44cc0a7baac8ad7606dd8a35b71f4ec0135f50e6432921f95d8be7db3d664ce6b3f59bedddd4bc132f47fb8d5f20cbc616717b76cc32ab6c0df179a3c4199' + 'edf7d6eb62af51e46e2cd04c7545bf57c59629a947c434d5ad65c8f06c36562c2bb96404c615f1a8379d3ae1c4a9b7278d3c7899d2cb308d89425fe37b72db21' + ) validpgpkeys=('7168B983815A5EEF59A4ADFD2A3F414E736060BA') # Damien Miller prepare() { @@ -102,6 +110,8 @@ package() { install -Dm644 ../sshdgenkeys.service -t "${pkgdir}"/usr/lib/systemd/system/ install -Dm644 ../sshd.service -t "${pkgdir}"/usr/lib/systemd/system/ + install -Dm644 ../ssh-agent.service -t "${pkgdir}"/usr/lib/systemd/user/ + install -Dm644 ../ssh-agent.socket -t "${pkgdir}"/usr/lib/systemd/user/ install -Dm644 ../sshd.conf -t "${pkgdir}"/usr/lib/tmpfiles.d/ install -Dm644 ../sshd.pam "${pkgdir}"/etc/pam.d/sshd diff --git a/ssh-agent.service b/ssh-agent.service new file mode 100644 index 0000000..812303c --- /dev/null +++ b/ssh-agent.service @@ -0,0 +1,19 @@ +# Requires SSH_AUTH_SOCK="$XDG_RUNTIME_DIR/ssh-agent.socket" +# set in environment, handled for example in plasma via +# /etc/xdg/plasma-workspace/env/ssh-agent.sh +[Unit] +ConditionEnvironment=!SSH_AGENT_PID +Description=OpenSSH key agent +Documentation=man:ssh-agent(1) man:ssh-add(1) man:ssh(1) +Requires=ssh-agent.socket + +[Service] +Environment=SSH_AUTH_SOCK=%t/ssh-agent.socket +ExecStartPre=/usr/bin/rm -f $SSH_AUTH_SOCK +ExecStart=/usr/bin/ssh-agent -D -a $SSH_AUTH_SOCK +PassEnvironment=SSH_AGENT_PID +SuccessExitStatus=2 +Type=simple + +[Install] +Also=ssh-agent.socket diff --git a/ssh-agent.socket b/ssh-agent.socket new file mode 100644 index 0000000..d589cbc --- /dev/null +++ b/ssh-agent.socket @@ -0,0 +1,14 @@ +[Unit] +Description=OpenSSH key agent +Documentation=man:ssh-agent(1) man:ssh-add(1) man:ssh(1) + +[Socket] +ListenStream=%t/ssh-agent.socket +Service=ssh-agent.service +Priority=6 +Backlog=5 +SocketMode=0600 +DirectoryMode=0700 + +[Install] +WantedBy=sockets.target -- 2.40.1