Compare commits

..

13 commits
v0.0.3 ... main

Author SHA1 Message Date
e88176ff5e
Change pkgname 2024-05-09 12:51:13 +03:00
60b945ce25
Add changelog, bump version and fix url 2024-05-09 12:29:55 +03:00
b9e033da09
Add support for config file 2024-05-09 12:19:31 +03:00
368afcdfd9
Fix detecting openssh key 2024-05-09 11:37:21 +03:00
5f99726988
Add support for ed25519 host keys 2024-05-09 11:32:47 +03:00
02fc6bb1c3
Add PKGBUILD 2024-05-09 11:15:42 +03:00
4e13c76c55
Add gitignore 2024-05-09 11:15:31 +03:00
0dfe4c008a
Fix issues after converting to posix 2024-05-09 11:15:14 +03:00
3599220815
Format scripts with shfmt 2024-05-09 11:02:40 +03:00
7aa6142adb
Convert scripts to posix sh 2024-05-09 11:02:17 +03:00
688ee538ae
Update license 2024-05-09 11:02:06 +03:00
Giancarlo Razzolini
3905a71c1d
Merge pull request #9 from gea0/dss_fix
removed dss key generation
2019-09-10 16:02:31 -03:00
Your Name
470a472eab removed dss key generation 2018-11-14 19:49:16 +01:00
7 changed files with 149 additions and 83 deletions

3
.gitignore vendored Normal file
View file

@ -0,0 +1,3 @@
mkinitcpio-dropbear*.tar.zst
src/
pkg/

23
ChangeLog Normal file
View file

@ -0,0 +1,23 @@
2024-05-09 Marko Korhonen <marko@korhonen.cc>
* 0.1.0 :
- Add support for ed25519 host keys
- Add support for a config file which allows changing the dropbear port
2015-08-11 Giancarlo Razzolini <grazzolini@gmail.com>
* 0.0.3 :
- Correction of the hook help text.
- Changed the root user home directory to /root.
- Some other cleanups, specially regarding TMPDIR files juggling.
2015-07-28 Giancarlo Razzolini <grazzolini@gmail.com>
* 0.0.2 :
- Removed leftovers from the old dropbear_initrd_encrypt which where conflicting with mkinitcpio-utils.
2015-07-14 Giancarlo Razzolini <grazzolini@gmail.com>
* 0.0.1 :
- Initial release.
- Provide the same functionality as in dropbear_initrd_encrypt regarding dropbear.

View file

@ -1,3 +1,4 @@
Copyright (c) 2024, Marko Korhonen
Copyright (c) 2015, Giancarlo Razzolini Copyright (c) 2015, Giancarlo Razzolini
All rights reserved. All rights reserved.

36
PKGBUILD Normal file
View file

@ -0,0 +1,36 @@
# Maintainer: Marko Korhonen <marko@korhonen.cc>
# Contributor: Caleb Maclennan <caleb@alerque.com>
# Contributor: Giancarlo Razzolini <grazzolini@archlinux.org>
pkgname=mkinitcpio-dropbear2
pkgname_="mkinitcpio-dropbear"
conflicts=("$pkgname_")
pkgver=0.1.0
pkgrel=1
pkgdesc='hook to install and enable the dropbear daemon in early userspace'
arch=(any)
url="https://git.korhonen.cc/FunctionalHacker/$pkgname_"
license=(GPL3)
depends=(dropbear psmisc)
optdepends=(
'mkinitcpio-netconf: Network interface configuration'
'mkinitcpio-ppp: PPP interface configuration'
'openssh: Allows the use of the same host keys used for normal access'
)
source=(
"dropbear_hook"
"dropbear_install"
"LICENSE"
)
backup=("etc/dropbear/config")
changelog=ChangeLog
sha256sums=('9852ab6a3ba4191ed3eabbfebb2876fe7ff1003f62309043ec0b8b9374e3b9ee'
'3f6cb2c6edd2a5510e9d2366b68815b0d0f9d7cfc066c26c4b842af44d2024fd'
'ac69d63ecc672c698582b0fc260dbfe42d71adcdab707f807c8e1113be11abd8')
package() {
install -Dm0644 dropbear_hook "$pkgdir/usr/lib/initcpio/hooks/dropbear"
install -Dm0644 dropbear_install "$pkgdir/usr/lib/initcpio/install/dropbear"
install -Dm0644 dropbear_config "$pkgdir/etc/dropbear/config"
install -Dm0644 -t "$pkgdir/usr/share/licenses/$pkgname_/" LICENSE
}

1
dropbear_config Normal file
View file

@ -0,0 +1 @@
DROPBEAR_PORT=22

View file

@ -1,19 +1,24 @@
#!/usr/bin/ash #!/bin/sh
run_hook () run_hook() {
{
[ -d /dev/pts ] || mkdir -p /dev/pts [ -d /dev/pts ] || mkdir -p /dev/pts
mount -t devpts devpts /dev/pts mount -t devpts devpts /dev/pts
echo "Starting dropbear" if [ -s /etc/dropbear/config ]; then
/usr/sbin/dropbear -E -s -j -k echo "Found dropbear config file"
. /etc/dropbear/config
fi
port=${DROPBEAR_PORT:-22}
echo "Starting dropbear on port $port"
/usr/sbin/dropbear -E -s -j -k -p "$port"
} }
run_cleanuphook () run_cleanuphook() {
{
umount /dev/pts umount /dev/pts
rm -R /dev/pts rm -R /dev/pts
if [ -f /var/run/dropbear.pid ]; then if [ -f /var/run/dropbear.pid ]; then
kill `cat /var/run/dropbear.pid` kill "$(cat /var/run/dropbear.pid)"
fi fi
} }

View file

@ -1,75 +1,67 @@
#!/bin/bash #!/bin/sh
set -e
CONFIG_FILE="/etc/dropbear/config"
KEY_TYPES="ed25519 ecdsa rsa"
get_fingerprint() { get_fingerprint() {
local keyfile="$1" kf="$1"
dropbearkey -y -f "${keyfile}" | sed -n '/^Fingerprint:/ {s/Fingerprint: *//; p}' dropbearkey -y -f "${kf}" | sed -n '/^Fingerprint:/ {s/Fingerprint: *//; p}'
} }
display_fingerprints() { display_fingerprints() {
local keyfile for kt in $KEY_TYPES; do
kf="/etc/dropbear/dropbear_${kt}_host_key"
for keyfile in "/etc/dropbear/dropbear_rsa_host_key" "/etc/dropbear/dropbear_dss_host_key" "/etc/dropbear/dropbear_ecdsa_host_key" ; do if [ -s "${kf}" ]; then
if [ -s "${keyfile}" ] ; then echo "$(basename "${kf}") : $(get_fingerprint "${kf}")"
echo "$(basename "${keyfile}") : $(get_fingerprint "${keyfile}")"
fi fi
done done
} }
copy_openssh_keys() { copy_openssh_keys() {
local osshrsa="/etc/ssh/ssh_host_rsa_key" return_code=1
local osshdsa="/etc/ssh/ssh_host_dsa_key"
local osshecdsa="/etc/ssh/ssh_host_ecdsa_key"
local dbpre="/etc/dropbear/dropbear_" for kt in $KEY_TYPES; do
osshkey="/etc/ssh/ssh_host_${kt}_key"
local return_code=1 if [ -s "$osshkey" ]; then
dropbearconvert \
if [ -s "$osshrsa" ]; then openssh dropbear \
dropbearconvert openssh dropbear $osshrsa ${dbpre}rsa_host_key "$osshkey" \
return_code=0 "/etc/dropbear/dropbear_${kt}_host_key"
fi
if [ -s "$osshdsa" ]; then
dropbearconvert openssh dropbear $osshdsa ${dbpre}dss_host_key
return_code=0
fi
if [ -s "$osshecdsa" ]; then
dropbearconvert openssh dropbear $osshecdsa ${dbpre}ecdsa_host_key
return_code=0 return_code=0
fi fi
done
return $return_code return $return_code
} }
generate_keys() { generate_keys() {
local keyfile keytype for kt in $KEY_TYPES; do
for keytype in rsa dss ecdsa ; do kf="/etc/dropbear/dropbear_${kt}_host_key"
keyfile="/etc/dropbear/dropbear_${keytype}_host_key" if [ ! -s "$kf" ]; then
if [ ! -s "$keyfile" ]; then echo "Generating ${kt} host key for dropbear ..."
echo "Generating ${keytype} host key for dropbear ..." dropbearkey -t "${kt}" -f "${kf}"
dropbearkey -t "${keytype}" -f "${keyfile}"
fi fi
done done
} }
build () build() {
{
# #
# Begin real processing # Begin real processing
# #
# Are we even needed? # Are we even needed?
if [ ! -r "/etc/dropbear/root_key" -o ! -s "/etc/dropbear/root_key" ]; then if [ ! -r "/etc/dropbear/root_key" ] || [ ! -s "/etc/dropbear/root_key" ]; then
echo "There is no root key in /etc/dropbear/root_key existent; exit" echo "There is no root key in /etc/dropbear/root_key existent; exit"
return 0 return 0
fi fi
# if TMPDIR is set leave it alone otherwise set # if TMPDIR is set leave it alone otherwise set
[ -z $TMPDIR ] && TMPDIR='/tmp/dropbear_initrd_encrypt' [ -z "$TMPDIR" ] && TMPDIR='/tmp/dropbear_initrd_encrypt'
# check if TMPDIR exsists if not make it # check if TMPDIR exsists if not make it
[ -d $TMPDIR ] || mkdir -p $TMPDIR [ -d "$TMPDIR" ] || mkdir -p "$TMPDIR"
umask 0022 umask 0022
@ -92,11 +84,16 @@ build ()
add_dir "/var/log" add_dir "/var/log"
touch "${BUILDROOT}"/var/log/lastlog touch "${BUILDROOT}"/var/log/lastlog
if [ -s $CONFIG_FILE ]; then
echo "Using config file $CONFIG_FILE:"
cat $CONFIG_FILE
add_file $CONFIG_FILE
fi
add_runscript add_runscript
} }
help () help() {
{
cat <<HELPEOF cat <<HELPEOF
This hook is meant to be used in conjunction with mkinitcpio-netconf and/or This hook is meant to be used in conjunction with mkinitcpio-netconf and/or
mkinitcpio-ppp. It DOES NOT provide any default shell. It will only install mkinitcpio-ppp. It DOES NOT provide any default shell. It will only install