본관은 경주(慶州). 자는 택부(澤夫). 할아버지는 판서 김자수(金自粹)이고, 아버지는 소윤(少尹) 김근(金根)이며, 어머니는 이순(李淳)의 딸이다. 지돈녕부사(知敦寧府事) 김점(金漸)의 손서(孫壻)이다.
1438년(세종 20) 생원시에 합격하고 1447년(세종 29) 식년 문과에 정과로 급제해 승문원정자(承文院正字)가 되었다. 1452년(단종 즉위년) 사선서주부(司膳暑注簿)로 재직할 때 진하사검찰관(進賀使檢察官) 유자문(柳子文)이 경천참(敬天站)에서 병으로 죽자, 감찰이 되어 후임으로 연경을 다녀왔고, 이듬해 우정언(右正言)이 되었다.
1455년 세조가 즉위하자 판관으로 원종공신(原從功臣) 2등에 책록되었고, 1457년(세조 3) 평양소윤으로 파견되었다. 이듬해자산(慈山) 사람 임유기(任有紀) 등의 무고로 의금부에 압송 중인 자산읍 수령을 전송하며 위로한 사건으로 파직되었다가 곧 사예(司藝)에 복직되었다.
1465년 승문원판사로서 경차관의 임무를 띠고 황해도에 파견되어 도적의 죄를 다스렸다. 1466년 대사성·호조참의를 거쳐 성절사(聖節使)로 명나라에 다녀왔고, 이어 황해도관찰사·예조참의·충청도관찰사 등을 역임하였다.
1473년(성종 4) 예조참판으로서 성종의 생부인 의경왕묘(懿敬王廟)의 조성에 참여했고, 이듬해 동지중추부사 겸 경상도관찰사로 파견되어 왜적 토벌에 공을 세웠다.
1476년 동지중추부사로 사은사 판중추부사 박중선(朴仲善)의 부사가 되어 다시 명나라에 다녀왔고, 이어 대사헌·예조참판·전라도관찰사·동지중추부사 등을 역임하였다. 1485년 개성유수로 파견된 뒤 2년 간에 걸쳐 개성부의 유학(儒學)을 크게 진흥시켰다.
1487년 70세로 치사(致仕: 벼슬에서 물러남)를 청했으나 오히려 형조참판에 중용되었다. 1490년 가정대부(嘉靖大夫)로 품계가 오르면서 행첨지중추부사로 고쳐 임명되었고, 이후 수지중추부사·동지중추부사 등을 역임하였다.
성품이 순근(醇謹: 순박하면서 신중함)하고, 부지런하면서도 공평한 직무 수행으로 칭송이 있었다. 시호는 공평(恭平)이다.