summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--projectroot/etc/init.d/dropbear13
-rw-r--r--projectroot/etc/rc.once.d/dropbear23
2 files changed, 32 insertions, 4 deletions
diff --git a/projectroot/etc/init.d/dropbear b/projectroot/etc/init.d/dropbear
index 15671c9d8..4dda9aaf7 100644
--- a/projectroot/etc/init.d/dropbear
+++ b/projectroot/etc/init.d/dropbear
@@ -15,9 +15,18 @@ test -z "$DROPBEAR_BANNER" || \
DROPBEAR_EXTRA_ARGS="$DROPBEAR_EXTRA_ARGS -b $DROPBEAR_BANNER"
dropbear_start() {
-
KEY_ARGS=""
- test -f $DROPBEAR_RSAKEY && KEY_ARGS="$KEY_ARGS -r $DROPBEAR_RSAKEY"
+ for keytype in $DROPBEAR_KEYTYPES
+ do
+ case "$keytype" in
+ rsa)
+ test -f "$DROPBEAR_RSAKEY" && KEY_ARGS="$KEY_ARGS -r $DROPBEAR_RSAKEY"
+ ;;
+ *)
+ echo "Key type '$keytype' not supported"
+ ;;
+ esac
+ done
echo -n "starting dropbear..."
diff --git a/projectroot/etc/rc.once.d/dropbear b/projectroot/etc/rc.once.d/dropbear
index b70f5f22e..0735fed38 100644
--- a/projectroot/etc/rc.once.d/dropbear
+++ b/projectroot/etc/rc.once.d/dropbear
@@ -5,10 +5,11 @@ PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
. /usr/lib/init/dropbear.sh
gen_key() {
-
key_type=$1
key_file=$2
+ [ -e "$key_file" ] && return
+
rm -f $key_file > /dev/null 2>&1
echo -n "generating $key_type key..."
@@ -22,4 +23,22 @@ gen_key() {
fi
}
-[ -e "$DROPBEAR_RSAKEY" ] || gen_key rsa "$DROPBEAR_RSAKEY"
+gen_keys() {
+ for keytype in $DROPBEAR_KEYTYPES
+ do
+ case "$keytype" in
+ rsa)
+ gen_key rsa "$DROPBEAR_RSAKEY"
+ ;;
+ *)
+ echo "Key type '$keytype' not supported"
+ ;;
+ esac
+ done
+}
+
+if ! gen_keys
+then
+ echo "Generating SSH keys failed!"
+ exit 1
+fi