Оба эти глагола имеют только одну форму и выражают моральное долженствование, часто в виде рекомендации или совета.

В их использовании есть небольшая разница, - 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.
Тебе надо было (следовало, ты был должен) сказать мне об этом вчера.