Consider sheaves of sets on a topological space $X$. A standard fact (and exercise) is the following equivalence for a morphism $\phi\colon \mathscr{F}\rightarrow \mathscr{G}$ of such sheaves:
(a) $\phi$ is an epimorphism in this category of sheaves
(b) The induced morphisms $\phi_x$ on stalks are surjective for all $x\in X$
I found it surprisingly hard to come up with an idea for a proof of (a)=>(b), though I think I managed to do it using an appropriate skyscraper sheaf and thus showing that the $\phi_x$ are epimorphisms too.
Since I found shorter proofs for the analogous statements for monomorphisms and injectivity, I was wondering if there was some elegant and at the same time 'elementary' way to do it. That is, I'd like to see where the surjectivity comes from.
I know there are short proofs using the fact that colimits commute with left adjoints, but I don't want to use that. Examples for what I would like are usage of the product of all stalks, the fact that morphisms are equal if they agree on all stalks or something alike. I didn't have any idea up to now, though.
Thanks for any insight.
TL;DR: Is there an elegant proof for the equivalence not using adjoints?