Оба эти глагола имеют только одну форму и выражают моральное долженствование, часто в виде рекомендации или совета.
В их использовании есть небольшая разница, - should часто передает личное отношение, а ought звучит более формально.
You should go to the doctor at once.
Ты немедленно должен сходить к врачу.
You ought to do it at once.
Вам необходимо это сделать безотлагательно.
Should используется с инфинитивом без частицы to, ought с инфинитивом с частицей to.
Они могут использоваться с инфинитивом в форме Perfect, когда действие относится к прошлому и говорящий хочет сказать, что кто-то действовал неправильно.
You should have told me about it yesterday.
Тебе надо было (следовало, ты был должен) сказать мне об этом вчера.