본관은 광산(光山). 자는 덕부(德夫). 아버지는 김기순(金箕詢)이며, 부승지 김주현(金疇鉉)의 아버지이다.
안의현감(安義縣監)을 지낸 뒤 1858년(철종 9) 식년 문과에 갑과로 급제하여 이듬해 사간원대사간이 되었다. 고종조에 들어와서는 형조판서를 지냈다.
1872년(고종 9) 경기도관찰사로 부임하여 도내의 산군(山郡)에도 해읍(海邑)과 똑같은 포군(砲軍)을 설치하는 등 국방을 튼튼히 하였으며, 탐학한 삭녕군수(朔寧郡守) 김두하(金斗河)를 단죄하여 기강을 바로잡았다.
그 뒤 이조·예조·호조·공조의 판서와 한성부판윤을 차례로 역임한 뒤 1891년 지중추부사(知中樞府事)로 치사하였다. 또한, 문장에도 뛰어나 홍문관·예문관의 제학 등 문한직(文翰職)에 있으면서 임금의 많은 교문(敎文)을 제술하기도 하였다.