dropbear: add a uci-defaults script for loading authorized keys

Write the ssh authorized key to /etc/dropbear/ssh_authorized_keys if present
inside boad.json.

Signed-off-by: John Crispin <john@phrozen.org>
This commit is contained in:
John Crispin 2024-09-17 16:58:24 +02:00
parent b506a305fe
commit e428d7999a
2 changed files with 22 additions and 0 deletions

View File

@ -227,6 +227,8 @@ define Package/dropbear/install
$(INSTALL_DIR) $(1)/etc/dropbear $(INSTALL_DIR) $(1)/etc/dropbear
$(INSTALL_DIR) $(1)/lib/preinit $(INSTALL_DIR) $(1)/lib/preinit
$(INSTALL_DATA) ./files/dropbear.failsafe $(1)/lib/preinit/99_10_failsafe_dropbear $(INSTALL_DATA) ./files/dropbear.failsafe $(1)/lib/preinit/99_10_failsafe_dropbear
$(INSTALL_DIR) $(1)/etc/uci-defaults
$(INSTALL_DATA) ./files/dropbear.defaults $(1)/etc/uci-defaults/50-dropbear
$(foreach f,$(filter /etc/dropbear/%,$(Package/dropbear/conffiles)),$(if $(wildcard $(TOPDIR)/files/$(f)),chmod 0600 $(TOPDIR)/files/$(f) || :; )) $(foreach f,$(filter /etc/dropbear/%,$(Package/dropbear/conffiles)),$(if $(wildcard $(TOPDIR)/files/$(f)),chmod 0600 $(TOPDIR)/files/$(f) || :; ))
endef endef

View File

@ -0,0 +1,20 @@
[ ! -s /etc/dropbear/authorized_keys ] || exit 0
. /usr/share/libubox/jshn.sh
json_init
json_load "$(cat /etc/board.json)"
json_select credentials
json_get_keys keys ssh_authorized_keys
[ -z "$keys" ] || {
touch /etc/dropbear/authorized_keys
uci set dropbear.@dropbear[-1].PasswordAuth='off'
uci set dropbear.@dropbear[-1].RootPasswordAuth='off'
}
json_select ssh_authorized_keys
for key in $keys; do
json_get_var val "$key"
echo "$val" >> /etc/dropbear/authorized_keys
done
json_select ..
json_select ..