본관은 경주(慶州). 아버지는 김계성(金季誠)이다.
1429년(세종 11) 스물세 살에 생원시에 합격하고 1437년 문음(門蔭)으로 충훈부사승(忠勳府司丞)에 제수, 이후 전농시직장(典農寺直長)·한성부중부령(漢城府中部令)·감찰 등을 지냈다.
병조좌랑 재직 중 부사직(副司直) 이보흠(李甫欽)을 사직에 잘못 승수(陞授: 품계를 올려 제수함)시킨 사건에 연루되어 논죄되었으나 공신자손이라 하여 파직에 그쳤다. 그 뒤 복직되어 봉상시판관(奉常寺判官)·병조정랑·장령(掌令)·개성부단사관(開城府斷事官) 등을 지냈다.
1455년(세조 1) 좌익원종공신(佐翼原從功臣) 2등에 책록되었고, 이어 우사간대부(右司諫大夫)를 거쳐 형조참의·동부승지·도승지·이조참판·경기관찰사·한성부윤(漢城府尹) 등을 지냈다. 1464년 대사헌, 1469년(예종 1) 경상도관찰사로 나갔다가 병으로 사직하였다.
그 뒤 복직하여 개성부유수·판한성부사·평안도관찰사를 거쳐 1476년(성종 7) 지중추부사로 벼슬에서 물러나기를 청하였으나 허락되지 않았다. 재직 중 뚜렷한 업적은 없으나 시사(詩詞)에 능통하여 명성이 높았고 세조 때 청백리에 녹선되었다. 시호는 공호(恭胡)이다.