diff --git a/operator_setup.sh b/operator_setup.sh index 9882d82..6548ef9 100755 --- a/operator_setup.sh +++ b/operator_setup.sh @@ -515,11 +515,12 @@ SSH_DIR="${MOUNT_POINT}/root/.ssh" mkdir -p "$SSH_DIR" if [[ "$SSH_MODE" == "generate" ]]; then - TMP_KEY=$(mktemp) + TMP_DIR=$(mktemp -d) + TMP_KEY="${TMP_DIR}/id_ed25519" ssh-keygen -t ed25519 -N "" -C "" -f "$TMP_KEY" -q PRIVKEY=$(cat "$TMP_KEY") PUBKEY=$(cat "${TMP_KEY}.pub") - rm -f "$TMP_KEY" "${TMP_KEY}.pub" + rm -rf "$TMP_DIR" echo "$PUBKEY" > "${SSH_DIR}/authorized_keys" @@ -533,12 +534,14 @@ if [[ "$SSH_MODE" == "generate" ]]; then echo "---" fi - # Save locally to ~/.ssh/bb- - LOCAL_KEY_DIR="$HOME/.ssh" + # Save to the invoking user's ~/.ssh (SUDO_USER if running via sudo, else HOME) + REAL_HOME=$(getent passwd "${SUDO_USER:-$USER}" 2>/dev/null | cut -d: -f6) + LOCAL_KEY_DIR="${REAL_HOME:-$HOME}/.ssh" LOCAL_KEY_PATH="${LOCAL_KEY_DIR}/bb-${DEVICE_ID}" mkdir -p "$LOCAL_KEY_DIR" echo "$PRIVKEY" > "$LOCAL_KEY_PATH" chmod 600 "$LOCAL_KEY_PATH" + [[ -n "$SUDO_USER" ]] && chown "$SUDO_USER" "$LOCAL_KEY_PATH" || true info "Private key saved locally: ${LOCAL_KEY_PATH}" unset PRIVKEY