Николай Иванович Краснов родился 10 декабря 1919 года в селе Воейково Липецкой области.
После окончания неполной средней школы работал счетоводом в колхозе.
В сентябре 1939 года Краснов был призван на службу в Рабоче-Крестьянскую Красную Армию. С октября 1942 года — на фронтах Великой Отечественной войны. В боях два раза был ранен. К августу 1943 года сержант Николай Краснов был наводчиком орудия 5-й батареи 1852-го истребительно-противотанкового артиллерийского полка 32-й отдельной истребительно-противотанковой артиллерийской бригады 40-й армии Воронежского фронта. Отличился во время освобождения Украинской ССР.
В боях за освобождение Левобережной Украины расчёт Краснова уничтожил 7 танков и 2 штурмовых орудия противника. Во время битвы за Днепр Краснов участвовал в сражениях на плацдарме в районе села Ходоров Мироновского района Киевской области. В районе хутора Холодный Черкасской области он лично уничтожил вражеский танк, прорвавшийся в тыл советским частям.
Указом Президиума Верховного Совета СССР от 24 декабря 1943 года за "образцовое выполнение боевых заданий командования на фронте борьбы с немецкими захватчиками и проявленные при этом мужество и героизм" сержант Николай Краснов был удостоен высокого звания Героя Советского Союза.
После окончания войны Краснов продолжил службу в Советской Армии.
В 1945 году он окончил Ростовское артиллерийское училище, в 1948 году — курсы усовершенствования офицерского состава.
В 1968 году в звании полковника Краснов был уволен в запас. Проживал в городе Данков Липецкой области, работал в Данковском райисполкоме.
Скончался 10 октября 2001 года, похоронен на городском кладбище Данкова.