Ought is the past tense of owe.
At least, it was originally.
Both words come from the Old English verb āgan, which meant ‘to have.’ The ‘owe’ meaning comes from a phrase āgan tō ġieldenne ‘to have (something) to pay.’ Eventually, we dropped the tō ġieldenne ‘to pay.’
Something similar happened in Latin. Dēbēre ‘to owe’ became an ‘ought’ word: it gave birth to Spanish deber, French devoir, Italian dovere, all meaning both ‘owe’ and ‘should.’
Even ‘should’ comes from debt: it comes from the Old English verb sċulan, whose earliest known meaning was — you guessed it — ‘to owe.’
So the Old English word sċyld meant both ‘debt’ and ‘guilt.’ German still uses the related word Schuld for both.
How much of our moral language is debt collection?