board/common: drop duplicate sshd.config and ssh-hostkeys

Instead, use the version from package/skeleton-init-finit, including the
ssh-hostkeys (previously ssh-genhostkeys) from the same package, because
it include extensive error handling and logging on failure.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
This commit is contained in:
Joachim Wiberg
2023-10-09 10:41:46 +02:00
committed by Tobias Waldekranz
parent e85bc8223b
commit acd33d4fa5
5 changed files with 53 additions and 60 deletions
@@ -1,2 +0,0 @@
task [S] /lib/infix/ssh-hostkeys --
service [2345789] <usr/ssh-hostkeys> /usr/sbin/sshd -D -- OpenSSH daemon
@@ -1,9 +0,0 @@
#!/bin/sh
for type in ecdsa ed25519 rsa; do
[ -f /var/lib/ssh/ssh_host_${type}_key ] \
|| ssh-keygen -N "" -t $type -f /var/lib/ssh/ssh_host_${type}_key \
|| exit 1
done
initctl cond set ssh-hostkeys
@@ -1,2 +1,4 @@
task [S] <pid/syslogd> /usr/bin/ssh-genhostkeys -- Verifying SSH host keys
service [2345789] <usr/ssh-hostkeys> env:-/etc/default/sshd /usr/sbin/sshd -D $SSHD_OPTS -- OpenSSH daemon
task <pid/syslogd> \
[S] /usr/bin/ssh-hostkeys -- Verifying SSH host keys
service <task/ssh-hostkeys/success> env:-/etc/default/sshd \
[2345789] /usr/sbin/sshd -D $SSHD_OPTS -- OpenSSH daemon
@@ -1,47 +0,0 @@
#!/bin/sh
tmp=$(mktemp)
dir=$(dirname $(grep -r '^HostKey' /etc/ssh/* |tail -1 | awk '{print $2}'))
log()
{
logger -sik -p security.notice -t sshd "$@"
}
warn()
{
logger -sik -p security.warning -t sshd "$@"
}
err()
{
logger -sik -p security.err -t sshd "$@"
}
check()
{
if sshd -t >$tmp 2>&1; then
log "SSH hostkeys OK, setting ssh-hostkeys condition"
initctl cond set ssh-hostkeys
return 0
fi
return 1
}
rc=0
if ! check; then
files=$(awk '/invalid format/{print $6}' "$tmp" | sed 's/.*"\(.*\)".*/\1/')
for file in $files; do
warn "Removing $file: invalid format"
rm "$file"
done
log "Generating SSH hostkeys ..."
if ssh-keygen -A; then
mv /etc/ssh/ssh_host_* "$dir/"
fi
if ! check; then
err "Failed generating SSH hostkeys!"
rc=1
fi
fi
rm "$tmp"
exit $rc
+49
View File
@@ -0,0 +1,49 @@
#!/bin/sh
tmp=$(mktemp)
dir=$(dirname "$(grep -r '^HostKey' /etc/ssh/* |tail -1 | awk '{print $2}')")
log()
{
prio=notice
if [ "$1" = "-p" ]; then
prio=$2
shift 2
fi
logger -sik -p "security.$prio" -t sshd "$@"
}
check()
{
if sshd -t >"$tmp" 2>&1; then
log "SSH hostkeys OK, setting ssh-hostkeys condition"
return 0
fi
return 1
}
rc=0
if ! check; then
files=$(awk '/invalid format/{print $6}' "$tmp" | sed 's/.*"\(.*\)".*/\1/')
for file in $files; do
log -p warn "Removing $file: invalid format!"
invalid=yes
rm "$file"
done
if [ -n "$invalid" ]; then
log "Invalid hostkeys detected, regenerating all SSH hostkeys ..."
else
log "Generating SSH hostkeys ..."
fi
if ssh-keygen -A; then
mv /etc/ssh/ssh_host_* "$dir/"
fi
if ! check; then
log -p err "Failed generating SSH hostkeys!"
rc=1
fi
fi
rm "$tmp"
exit $rc