First of all, there's no reason that an agent has to do the *greedy action*;  Agents can *explore* or they can follow *options*.   This is not what separates on-policy from off-policy learning.

The reason that Q-learning is off-policy is that it updates its Q-values using the Q-value of the next state $s'$ and the *greedy action* $a'$.  In other words, it estimates the *return* (total discounted future reward) for state-action pairs assuming a greedy policy.

The reason that SARSA is on-policy is that it updates its Q-values using the Q-value of the next state $s'$ and the *current policy's* action $a''$.  It estimates the return for state-action pairs assuming the current policy.

The distinction disappears if the current policy is a greedy policy.  Such a learner would be both off-policy and on-policy.  However, such an agent would not be good since it never explores.

Have you looked at the book available for free online?  Sutton, Richard S., and Andrew G. Barto. Reinforcement learning: An introduction. Vol. 1. No. 1. Cambridge: MIT press, 1998.