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