summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Maw <richard.maw@codethink.co.uk>2012-05-08 13:49:04 +0100
committerRichard Maw <richard.maw@codethink.co.uk>2012-05-08 13:49:04 +0100
commita2e654f81de6d551164831d76e2bf0b49dbe1948 (patch)
treefd5bcb40b4e59dda7b63213cf00a79ef0e7e8a84
parent844997e250ab4528fbed79615e0e083e3213cc7e (diff)
downloadopenssh-a2e654f81de6d551164831d76e2bf0b49dbe1948.tar.gz
openssh: add systemd service files
It may be more sensible to add these to openssh's build system rather than substituting and installing them manually, but it requires less alteration of upstream sources. The unit file also doesn't make use of socket activation, so boot times will be suboptimal.
-rw-r--r--openssh.morph13
-rw-r--r--opensshd.service.in11
-rwxr-xr-xsshd-keygen.in24
3 files changed, 45 insertions, 3 deletions
diff --git a/openssh.morph b/openssh.morph
index 90c10b08..f90655d6 100644
--- a/openssh.morph
+++ b/openssh.morph
@@ -3,14 +3,21 @@
"kind": "chunk",
"configure-commands": [
"autoreconf -if",
- "OPENSSL_SEEDS_ITSELF=yes ./configure --prefix=/usr --sysconfdir=/etc/ssh --datadir=/usr/share/sshd --libexecdir=/usr/lib/openssh --with-privsep-path=/var/lib/sshd"
+ "OPENSSL_SEEDS_ITSELF=yes ./configure --prefix=\"$PREFIX\" --sysconfdir=/etc/ssh --datadir=\"$PREFIX/share/sshd\" --libexecdir=\"$PREFIX/lib/openssh\" --with-privsep-path=/var/lib/sshd"
],
"build-commands": [
- "make"
+ "make",
+ "sed -e \"s|@prefix@|$PREFIX|g\" -e \"s|@STARTUP_SCRIPT_SHELL@|$PREFIX/bin/sh|g\" -e 's|@sysconfdir@|/etc/ssh|g' -e 's|@COMMENT_OUT_ECC@||g' sshd-keygen.in >sshd-keygen",
+ "sed -e \"s|@prefix@|$PREFIX|g\" opensshd.service.in >opensshd.service"
],
"install-commands": [
"make DESTDIR=\"$DESTDIR\" install",
"mkdir -p \"$DESTDIR\"/etc/init.d",
- "install -m 744 opensshd.init \"$DESTDIR\"/etc/init.d/opensshd"
+ "install -m 744 opensshd.init \"$DESTDIR\"/etc/init.d/opensshd",
+ "mkdir -p \"$DESTDIR/$PREFIX/sbin\"",
+ "install -m 744 sshd-keygen \"$DESTDIR/$PREFIX/sbin/sshd-keygen\"",
+ "mkdir -p \"$DESTDIR/lib/systemd/system/multi-user.target.wants\"",
+ "install -m 644 opensshd.service \"$DESTDIR/lib/systemd/system/opensshd.service\"",
+ "ln -s ../opensshd.service \"$DESTDIR/lib/systemd/system/multi-user.target.wants/opensshd.service\""
]
}
diff --git a/opensshd.service.in b/opensshd.service.in
new file mode 100644
index 00000000..2b369bb1
--- /dev/null
+++ b/opensshd.service.in
@@ -0,0 +1,11 @@
+[Unit]
+Description=OpenSSH server daemon
+After=network.target
+
+[Service]
+ExecStartPre=@prefix@/sbin/sshd-keygen
+ExecStart=@prefix@/sbin/sshd -D
+ExecReload=/bin/kill -HUP $MAINPID
+
+[Install]
+WantedBy=multi-user.target
diff --git a/sshd-keygen.in b/sshd-keygen.in
new file mode 100755
index 00000000..cbcbc925
--- /dev/null
+++ b/sshd-keygen.in
@@ -0,0 +1,24 @@
+#!@STARTUP_SCRIPT_SHELL@
+
+prefix=@prefix@
+sysconfdir=@sysconfdir@
+
+SSH_KEYGEN=$prefix/bin/ssh-keygen
+HOST_KEY_RSA1=$sysconfdir/ssh_host_key
+HOST_KEY_DSA=$sysconfdir/ssh_host_dsa_key
+HOST_KEY_RSA=$sysconfdir/ssh_host_rsa_key
+@COMMENT_OUT_ECC@HOST_KEY_ECDSA=$sysconfdir/ssh_host_ecdsa_key
+
+
+if [ ! -f $HOST_KEY_RSA1 ]; then
+ ${SSH_KEYGEN} -t rsa1 -f ${HOST_KEY_RSA1} -N ""
+fi
+if [ ! -f $HOST_KEY_DSA ]; then
+ ${SSH_KEYGEN} -t dsa -f ${HOST_KEY_DSA} -N ""
+fi
+if [ ! -f $HOST_KEY_RSA ]; then
+ ${SSH_KEYGEN} -t rsa -f ${HOST_KEY_RSA} -N ""
+fi
+@COMMENT_OUT_ECC@if [ ! -f $HOST_KEY_ECDSA ]; then
+@COMMENT_OUT_ECC@ ${SSH_KEYGEN} -t ecdsa -f ${HOST_KEY_ECDSA} -N ""
+@COMMENT_OUT_ECC@fi