#!/bin/bash set -eu -o pipefail die() { echo "ERROR: $*" 1>&2 exit 1 } cleanup() { umount "$drive" || true rmdir "$mnt" } trap cleanup EXIT drive="$1" pubkey="$2" [ -e "$drive" ] || die "$drive does not exist" [ -e "$pubkey" ] || die "$pubkey does not exist" mnt="$(mktemp -d)" mount "$drive" "$mnt" if [ ! -e "$mnt/root/.ssh" ]; then install -d "$mnt/root/.ssh" fi authz="$mnt/root/.ssh/authorized_keys" [ ! -e "$authz" ] || die "$authz already exists" install -m 0600 "$pubkey" "$authz"