diff --git a/ssh/askpass b/ssh/askpass new file mode 100755 index 0000000..45fb64b --- /dev/null +++ b/ssh/askpass @@ -0,0 +1,13 @@ +#!/bin/sh -e + +if [ -z "$SSH_HOST" ]; then + >&2 echo 'Missing SSH_HOST variable' + exit 1 +fi + +case "$SSH_HOST" in + *) + echo 'Unknown SSH host' + exit 1 + ;; +esac diff --git a/systemd/user/ssh@.service b/systemd/user/ssh@.service new file mode 100644 index 0000000..236e436 --- /dev/null +++ b/systemd/user/ssh@.service @@ -0,0 +1,13 @@ +[Unit] +Description=SSH persistent connection to %i + +[Service] +Type=forking +Slice=ssh.slice +Environment=SSH_ASKPASS=%E/ssh/askpass +Environment=SSH_HOST=%i +ExecStart=/usr/bin/ssh -fNT %i +Restart=on-failure + +[Install] +WantedBy=ssh.target