+# Remove non-default keys...
+{ grep ^HostKey "$config" || true; } | while read key_line; do
+ key=$(echo $key_line | cut -d" " -f2)
+ if [ "$key" = $HOST_KEY -o "$key" = $RSA_KEY -o \
+ "$key" = $DSA_KEY -o "$key" = $ECDSA_KEY ]; then
+ continue
+ fi
+
+ if [ "x$distro" = "xdebian" ]; then
+ # Most distros recreate missing keys...debian complains
+ type=""
+ if [ -e "$target/$key" ]; then
+ if grep -e "-----BEGIN DSA PRIVATE KEY-----" "$target/$key" > /dev/null; then
+ type=dsa
+ elif grep -e "-----BEGIN EC PRIVATE KEY-----" "$target/$key" > /dev/null; then
+ type=ecdsa
+ elif grep -e "-----BEGIN RSA PRIVATE KEY-----" "$target/$key" > /dev/null; then
+ type=rsa
+ elif grep -e "SSH PRIVATE KEY FILE FORMAT" "$target/$key" > /dev/null; then
+ type=rsa1
+ fi
+ else # do some guessing...
+ for i in rsa dsa ecdsa; do
+ if echo "$key" | grep _${i}_ > /dev/null; then
+ type="$i";
+ break;
+ fi
+ done
+ fi
+ if [ -z "$type" ]; then
+ echo "Warning: Unknown key type. I'll use \`rsa1'";
+ type=rsa1
+ fi
+
+ rm -f "$target/$key"{,.pub}
+ chroot "$target" \
+ env PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin \
+ ssh-keygen -t $type -q -N '' -f "$key"
+ else
+ rm -f "$target/$key"{,.pub}
+ fi
+done