summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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