diff mbox series

rootfs-postcommands.bbclass: avoid checking hard-coded openssh hostkey

Message ID 20260117120523.1378888-1-liu.ming50@gmail.com
State New
Headers show
Series rootfs-postcommands.bbclass: avoid checking hard-coded openssh hostkey | expand

Commit Message

Ming Liu Jan. 17, 2026, 12:05 p.m. UTC
The openssh host keys are configurable in openssh recipe, dont check
hard-coded path ${IMAGE_ROOTFS}/etc/ssh/ssh_host_rsa_key. Instead, try
to figure out the first host key in sshd_config, if there is no host
keys set in sshd_config, then check the first host key presenting in
${IMAGE_ROOTFS}/etc/ssh.

Signed-off-by: Ming Liu <liu.ming50@gmail.com>
---
 meta/classes-recipe/rootfs-postcommands.bbclass | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)
diff mbox series

Patch

diff --git a/meta/classes-recipe/rootfs-postcommands.bbclass b/meta/classes-recipe/rootfs-postcommands.bbclass
index f0c7ee658d..02cb97aec7 100644
--- a/meta/classes-recipe/rootfs-postcommands.bbclass
+++ b/meta/classes-recipe/rootfs-postcommands.bbclass
@@ -214,7 +214,11 @@  read_only_rootfs_hook () {
 	# If stateless-rootfs is enabled this is always done as we don't want to save keys then
 	if ${@ 'true' if not bb.utils.contains('IMAGE_FEATURES', 'overlayfs-etc', True, False, d) or bb.utils.contains('IMAGE_FEATURES', 'stateless-rootfs', True, False, d) else 'false'}; then
 		if [ -d ${IMAGE_ROOTFS}/etc/ssh ]; then
-			if [ -e ${IMAGE_ROOTFS}/etc/ssh/ssh_host_rsa_key ]; then
+			ssh_host_key_checkpath=$(sed -n 's/^[ \t]*HostKey[ \t]\+\(.*\)/\1/p' ${IMAGE_ROOTFS}/etc/ssh/sshd_config | head -1)
+			if [ ! -e "$ssh_host_key_checkpath" ]; then
+				ssh_host_key_checkpath=$(ls ${IMAGE_ROOTFS}/etc/ssh/ssh_host_*_key | cut -f1 | head -1)
+			fi
+			if [ -e "$ssh_host_key_checkpath" ]; then
 				echo "SYSCONFDIR=\${SYSCONFDIR:-/etc/ssh}" >> ${IMAGE_ROOTFS}/etc/default/ssh
 				echo "SSHD_OPTS=" >> ${IMAGE_ROOTFS}/etc/default/ssh
 			else