Этимологический словарь Крылова
Образовано суффиксальным способом от существительного знаха, которое в свою очередь было образовано от глагола знати. Первоначальное значение – "знаток" со временем переходит в "колдун", что, видимо, свидетельствует о древних представлениях, согласно которым от знания до колдовства – один шаг.