본관은 안동(安東). 자는 공익(公翼), 호는 만재(晩齋). 김덕순(金德淳)의 증손으로, 할아버지는 김복근(金復根)이고, 아버지는 서윤(庶尹) 김병문(金炳文)이며, 어머니는 송재덕(宋在德)의 딸이다. 현감인 큰아버지 김병광(金炳光)에게 입양되었다.
1834년(순조 34) 진사시에 합격하고, 1841년(헌종 7) 정시 문과에 병과로 급제하였다. 검열·봉상시정(奉常寺正)·홍문관제학(弘文館提學) 등을 거쳐 1853년(철종 4)에 대사성, 1856년에 이조참의, 1860년에 경상도관찰사, 1862년에 이조참판, 1863년에 대사헌, 1871년(고종 8)에 이조판서, 이듬해에 공조판서, 1877년에 좌참찬, 1878년에 수원유수(水原留守)를 역임하였다.
1873년 왕명으로 『기년아람(紀年兒覽)』의 속편을 편집하였다. 저서로는 『완염통고(琬琰通考)』가 있다. 시호는 문정(文貞)이다.