From fdbf0b65ac483510fbf5ec863eb3edc86e296e73 Mon Sep 17 00:00:00 2001 From: David Guglielmi Date: Sat, 16 May 2020 02:07:21 +0200 Subject: [PATCH] sys-kernel/dracut-openssh: add ebuild --- sys-kernel/dracut-openssh/Manifest | 5 ++ .../dracut-openssh/dracut-openssh-0.1.ebuild | 34 +++++++++++ .../dracut-openssh/files/dracut-openssh.conf | 10 +++ .../dracut-openssh/files/module-setup.sh | 61 +++++++++++++++++++ sys-kernel/dracut-openssh/files/sshd.service | 19 ++++++ sys-kernel/dracut-openssh/files/sshd_config | 10 +++ 6 files changed, 139 insertions(+) create mode 100644 sys-kernel/dracut-openssh/Manifest create mode 100644 sys-kernel/dracut-openssh/dracut-openssh-0.1.ebuild create mode 100644 sys-kernel/dracut-openssh/files/dracut-openssh.conf create mode 100644 sys-kernel/dracut-openssh/files/module-setup.sh create mode 100644 sys-kernel/dracut-openssh/files/sshd.service create mode 100644 sys-kernel/dracut-openssh/files/sshd_config diff --git a/sys-kernel/dracut-openssh/Manifest b/sys-kernel/dracut-openssh/Manifest new file mode 100644 index 0000000..a97728f --- /dev/null +++ b/sys-kernel/dracut-openssh/Manifest @@ -0,0 +1,5 @@ +AUX dracut-openssh.conf 285 BLAKE2B f318158898f6eb4286ec2cabe26d5552e2bff0771f3704ed17dff3002e02c4587900b647b1502880d8ce0175d2872ac63882cd62db3179905e08b56f413c23fe SHA512 0b745583b97236fa7fe9b5498fae45f93ed3ee4355b43ea4cd0aeeaa1a4033e4f50db820df9ee5f887b18ff2dab9e3617c2fde9189b17129ddf929cdcf638ec8 +AUX module-setup.sh 1693 BLAKE2B 40e8541f3d80f29e79238ebf4e170051e312f3fd3f6621005c522778401aac6b13e2de28b8a189fa7ab8ca21bf99d0ddadea8d1ac01fdd27d431ab0bf93c6529 SHA512 b4cc6eb049215aed6437bb1f34b1ae6763fe234ae9647c284ba134807fed50d5b04683fba28163fcde5f250b9898c1282c74c4e06d6442df5f6e75c89b093c95 +AUX sshd.service 312 BLAKE2B e4be767736d45d3ccbe3a6848d32ee6f9523f5e0641cf973da4501b5dcc7a41b9c127f208bb5125cef8683393d25729856652d94e7d5d8154b11a69300a4f860 SHA512 a4aaee86716a51c904ee95a08dae22c79a1153bfc8e1cb1cd15806a133200e3a7aacee9aa4abf0a749544ea898346b79454d6da30cef0ab42253bfbe9b83d866 +AUX sshd_config 445 BLAKE2B bbefbd4aa04f8edf79e8f09de8479891c85265f211d72511207aefd8551184f3fee4c4a4c964e98cad0398da63b609da68d105dc722e8f648d9e6228fcadd512 SHA512 34aa60a1a605b3e40394011c12e819de2c6d19fab3f710346f8d70d9dc0570cb872054bd328aa7d66b5a0f03bc7250382913786f4295b8477e2b8f0a7de3536d +EBUILD dracut-openssh-0.1.ebuild 704 BLAKE2B d7ca3557e9b91b8c76c03597051894d656e12e78e157ea74114b53cc719504b2ae8a2e7d6616d6c07d3838791d1e79653e3bb11caebe54119fcf0382ff8b3679 SHA512 3f6969d51afaf808cdbf01f84482c2d81ab22d88a0c6047be9396418ec5ea8e643cdcb5f4390f0b6610feab270c68d40b00c0b2d58b49e84b561c4975d606718 diff --git a/sys-kernel/dracut-openssh/dracut-openssh-0.1.ebuild b/sys-kernel/dracut-openssh/dracut-openssh-0.1.ebuild new file mode 100644 index 0000000..483dc60 --- /dev/null +++ b/sys-kernel/dracut-openssh/dracut-openssh-0.1.ebuild @@ -0,0 +1,34 @@ +# Copyright 2020 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 + +DESCRIPTION="Dracut OpenSSH module" +HOMEPAGE="https://github.com/dguglielmi/dracut-openssh" +SRC_URI="" + +LICENSE="GPL-3+" +SLOT="0" +KEYWORDS="~amd64 ~x86" + +DEPEND="net-misc/dhcp + net-misc/openssh + sys-apps/systemd + sys-kernel/dracut" +RDEPEND="${DEPEND}" + +S="${WORKDIR}" + +src_install() { + dodir /usr/lib/dracut/modules.d/48openssh + + insinto /usr/lib/dracut/modules.d/48openssh + doins "${FILESDIR}"/sshd_config + doins "${FILESDIR}"/sshd.service + + exeinto /usr/lib/dracut/modules.d/48openssh + doexe "${FILESDIR}/module-setup.sh" + + insinto /etc/dracut.conf.d + doins "${FILESDIR}/dracut-openssh.conf" +} diff --git a/sys-kernel/dracut-openssh/files/dracut-openssh.conf b/sys-kernel/dracut-openssh/files/dracut-openssh.conf new file mode 100644 index 0000000..8f9b2df --- /dev/null +++ b/sys-kernel/dracut-openssh/files/dracut-openssh.conf @@ -0,0 +1,10 @@ +# Dracut OpenSSH configuration +# +#SSHD_OPTS="-e -p 22" +# +#AUTHORIZED_KEYS="/root/.ssh/authorized_keys" +# +#DSA_HOST_KEY="/etc/ssh/ssh_host_dsa_key" +#ECDSA_HOST_KEY="/etc/ssh/ssh_host_ecdsa_key" +#ED25519_HOST_KEY="/etc/ssh/ssh_host_ed25519_key" +#RSA_HOST_KEY="/etc/ssh/ssh_host_rsa_key" diff --git a/sys-kernel/dracut-openssh/files/module-setup.sh b/sys-kernel/dracut-openssh/files/module-setup.sh new file mode 100644 index 0000000..e8db21e --- /dev/null +++ b/sys-kernel/dracut-openssh/files/module-setup.sh @@ -0,0 +1,61 @@ +#!/bin/bash + +# called by dracut +check() { + #check for sshd + require_binaries sshd || return 1 + + return 0 +} + +depends() { + echo network + return 0 +} + +install() { + [ -z ${AUTHORIZED_KEYS} ] && AUTHORIZED_KEYS="/root/.ssh/authorized_keys" + [ -z ${SSHD_OPTS} ] && SSHD_OPTS="-e -p 22" + [ -z ${DSA_HOST_KEY} ] && DSA_HOST_KEY="/etc/ssh/ssh_host_dsa_key" + [ -z ${ECDSA_HOST_KEY} ] && ECDSA_HOST_KEY="/etc/ssh/ssh_host_ecdsa_key" + [ -z ${ED25519_HOST_KEY} ] && ED25519_HOST_KEY="/etc/ssh/ssh_host_ed25519_key" + [ -z ${RSA_HOST_KEY} ] && RSA_HOST_KEY="/etc/ssh/ssh_host_rsa_key" + + local keytype keyfile + for keytype in dsa ecdsa ed25519 rsa; do + case ${keytype} in + dsa) keyfile=${DSA_HOST_KEY} ;; + ecdsa) keyfile=${ECDSA_HOST_KEY} ;; + ed25519) keyfile=${ED25519_HOST_KEY} ;; + rsa) keyfile=${RSA_HOST_KEY} ;; + esac + + [ -f ${keyfile} ] && inst_simple "${keyfile}" /etc/ssh/ssh_host_${keytype}_key + done + + inst_simple "${moddir}/sshd_config" /etc/ssh/sshd_config + inst_simple "$(which sshd)" + + inst_simple "${moddir}/sshd.service" ${systemdsystemunitdir}/sshd.service + mkdir -p "${initdir}/etc/sysconfig" + echo "SSHD_OPTS=\"${SSHD_OPTS}\"" > "${initdir}/etc/sysconfig/sshd" + + if [ -f ${AUTHORIZED_KEYS} ]; then + inst_simple ${AUTHORIZED_KEYS} /root/.ssh/authorized_keys + else + dfatal "No authorized_keys for root user found!" + return 1 + fi + + getent passwd sshd >> "${initdir}/etc/passwd" + getent group sshd >> "${initdir}/etc/group" + + mkdir -p -m 0755 "${initdir}$(getent passwd sshd | cut -d':' -f6)" + + systemctl -q --root "${initdir}" enable sshd + + mkdir -p -m 0755 "${initdir}/var/log" + touch "${initdir}/var/log/lastlog" + + return 0 +} diff --git a/sys-kernel/dracut-openssh/files/sshd.service b/sys-kernel/dracut-openssh/files/sshd.service new file mode 100644 index 0000000..d20a573 --- /dev/null +++ b/sys-kernel/dracut-openssh/files/sshd.service @@ -0,0 +1,19 @@ +[Unit] +Description=OpenSSH server daemon +DefaultDependencies=no +Before=cryptsetup.target + +[Service] +Type=simple + +EnvironmentFile=-/etc/sysconfig/sshd + +ExecStart=/usr/sbin/sshd -D $SSHD_OPTS + +ExecReload=/bin/kill -HUP $MAINPID +KillMode=process +Restart=on-failure +RestartSec=42s + +[Install] +WantedBy=sysinit.target diff --git a/sys-kernel/dracut-openssh/files/sshd_config b/sys-kernel/dracut-openssh/files/sshd_config new file mode 100644 index 0000000..bb61a4d --- /dev/null +++ b/sys-kernel/dracut-openssh/files/sshd_config @@ -0,0 +1,10 @@ +SyslogFacility AUTHPRIV +PermitRootLogin prohibit-password +AuthorizedKeysFile .ssh/authorized_keys +AuthenticationMethods publickey +UsePAM no +X11Forwarding no + +AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES +AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT +AcceptEnv LC_IDENTIFICATION LC_ALL LANGUAGE