본관은 광산(光山). 자는 원경(元卿)·경일(景一)·원일(元一). 생부는 김재창(金在昌), 양부는 김재겸(金在謙)이다.
현령으로 1861년(철종 12) 식년 문과에 갑과로 급제하여 동부승지와 좌부승지 등을 지냈다.
1864년(고종 1) 우승지가 된 뒤 이조참의·대사성·이조참판을 거쳐, 1866년 개성부유수로 재직 중 치적이 뛰어나 임기가 연장되고 가자(加資)되었다. 뒤에 병조판서·한성부판윤·함경도관찰사를 지냈다. 1872년에는 동지정사(冬至正使)로 청나라에 다녀와 혼란한 대내외 사정을 알렸다.
그 뒤 지의금부사(知義禁府事) 등을 지내다가 1882년 임오군란 직전 형조판서에 임명되었으나, 군란이 수습된 그해 10월에야 정식으로 취임하였다. 또, 군란이 일어나자 흥선대원군이 종척집사(宗戚執事)로 임명하였지만 이에 응하지 않았다.
후에 예조판서·공조판서·이조판서와 의정부의 좌우참찬 등의 요직을 거쳤으며, 1894년 갑오경장 당시 제1차 김홍집(金弘集) 내각에서 의정부좌찬성으로 활약하였다.