본관은 연안(延安). 자는 원초(元初). 대사헌 김로(金鏴)의 아들이며, 궁내부특진관 김완수(金完秀)의 아버지이다.
1829년(순조 29) 정시문과에 병과로 급제하였다. 1842년(헌종 8) 규장각직각(奎章閣直閣)이 되었다. 철종조에 들어와서는 이조참의·개성부유수·이조참판·성균관대사성 등을 역임한 뒤, 외직으로 나가 1861년에 강원도·전라도관찰사가 되었다.
그러나 전라도관찰사로 재임할 때 국고를 부정한 방법으로 취득한 죄로 사헌부의 탄핵을 받아 1864년(고종 1) 제주도에 위리안치(圍籬安置)되고, 자자형(刺字刑)까지 받았다.
그 뒤 고종의 특지(特旨)로 위리안치에서 풀려나 향리로 추방되었다가, 다시 관직에 등용되어 1873년 좌승지가 되었다.
또한, 1875년에 주청부사(奏請副使)가 되어 정사(正使) 이유원(李裕元)을 수행하여 청나라에 다녀 왔다. 같은 해 12월 형조판서에 올랐으나 강화도조약 체결로 민심이 어수선해져 조정을 비방하는 문자가 횡행하자 그 책임을 지고 이듬해 정월 파직당하였다.