From a2e654f81de6d551164831d76e2bf0b49dbe1948 Mon Sep 17 00:00:00 2001 From: Richard Maw Date: Tue, 8 May 2012 13:49:04 +0100 Subject: 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. --- openssh.morph | 13 ++++++++++--- opensshd.service.in | 11 +++++++++++ sshd-keygen.in | 24 ++++++++++++++++++++++++ 3 files changed, 45 insertions(+), 3 deletions(-) create mode 100644 opensshd.service.in create mode 100755 sshd-keygen.in 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 -- cgit v1.2.1