본관은 광산(光山). 자는 자양(子讓). 아버지는 증호조판서 김혁(金革)이며, 어머니는 현감 곽휴(郭休)의 딸이다.
어릴 때부터 무예에 뛰어나 1458년(세조 4) 내금위에 보직되었으나, 1460년 무과에 급제하여 승의교위(承義校尉)가 되었다.
이해 북쪽에 야인이 국경을 침범하여 자주 양민과 물건을 약탈하자 김질(金礩)을 따라 그들을 크게 무찔렀다. 그 뒤 1462년에는 대호군(大護軍)에 올랐다. 1467년 이시애(李施愛)의 난 때 구성군(龜城君) 이준(李浚)의 군관으로 출정하여, 평정에 공을 세워 정충출기적개공신(精忠出氣敵愾功臣) 2등에 책록되고 중추부첨지사(中樞府僉知事)에 임명되었다.
곧이어 공조참의가 되고, 다시 건주위(建州衛)의 야인정벌에 공을 세워 의주목사로 승진되었다. 1470년(성종 1) 평안도우후 등을 역임하고, 1473년 가선대부로 광원군(光原君)에 봉해졌다. 1473년 겸사복장(兼司僕將)을 역임하고, 1477년에는 첨지중추부사가 되었다.
1484년(성종 15) 하정사(賀正使)의 부사로 명나라에 다녀왔으며, 이듬해 평안도절도사로 부임하였으나 관찰사 성준(成俊)과 뜻이 맞지 않아 사직하였다. 1487년 다시 절도사로 있으면서 변방경비를 소홀히 하여 인마를 약탈당한 죄로 변방에 충군(充軍)되었다가 뒤에 다시 특진관(特進官) 등에 서용되었다. 시호는 양호(襄胡)이다.