Old English sceal, Northumbrian scule "I owe/he owes, will have to, ought to, must" (infinitive sculan, past tense sceolde), a common Germanic preterite-present verb (along with can, may, will), from Proto-Germanic *skal- (cf. Old Saxon sculan, Old Frisian skil, Old Norse and Swedish skola, Middle Dutch sullen, Old High German solan, German sollen, Gothic skulan "to owe, be under obligation;" related via past tense form to Old English scyld "guilt," German Schuld "guilt, debt;" also Old Norse Skuld, name of one of the Norns), from PIE root *skel- (2) "to be under an obligation."
Ground sense of the Germanic word probably is "I owe," hence "I ought." The sense shifted in Middle English from a notion of "obligation" to include "futurity." Its past tense form has become should (q.v.). Cognates outside Germanic are Lithuanian skeleti "to be guilty," skilti "to get into debt;" Old Prussian skallisnan "duty," skellants "guilty."