@@ -231,6 +231,7 @@ define Package/openssh-server/install
sed -r -i 's,^#(HostKey /etc/ssh/ssh_host_(rsa|ecdsa|ed25519)_key)$$$$,\1,' $(1)/etc/ssh/sshd_config
$(INSTALL_DIR) $(1)/etc/init.d
$(INSTALL_BIN) ./files/sshd.init $(1)/etc/init.d/sshd
+ $(INSTALL_BIN) ./files/sshd.failsafe $(1)/lib/preinit/99_10_failsafe_sshd
$(INSTALL_DIR) $(1)/usr/sbin
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/sshd $(1)/usr/sbin/
endef
new file mode 100755
@@ -0,0 +1,31 @@
+#!/bin/sh
+
+failsafe_sshd () {
+
+ sshd_tmpdir=/tmp/sshd
+ mkdir ${sshd_tmpdir}
+
+ sed -i 's/^root.*/root::0:17000:::::/g' /etc/shadow
+
+ for type in ecdsa ed25519; do
+ key=${sshd_tmpdir}/ssh_host_${type}_key
+ ssh-keygen -N '' -t ${type} -f ${key}
+ done
+
+ mkdir -m 0700 -p /var/empty
+
+ cat > ${sshd_tmpdir}/sshd_config <<EOF
+
+HostKey ${sshd_tmpdir}/ssh_host_ecdsa_key
+HostKey ${sshd_tmpdir}/ssh_host_ed25519_key
+
+PermitRootLogin yes
+PermitEmptyPasswords yes
+
+EOF
+
+ /usr/sbin/sshd -f ${sshd_tmpdir}/sshd_config -E ${sshd_tmpdir}/sshd.log
+
+}
+
+boot_hook_add failsafe failsafe_sshd