본관은 본관(安東). 자는 성일(聖一), 호는 약산(約山). 할아버지는 이조판서 김명순(金明淳)이며, 아버지는 영의정 김흥근(金興根)이다.
1847년(헌종 13) 정시문과에 병과로 급제, 대교(待敎)가 된 뒤 안동김씨의 세도정권 아래 홍문관부제학·이조참의·이조참판·공조판서·예조판서 등 요직을 두루 지냈다. 1866년 대사헌, 1867년 이후에는 세 차례나 이조판서를 지냈다.
1879년 병조판서, 1880년 통리기무아문당상(統理機務衙門堂上)에 오르고, 곧 이어 평안도관찰사·수원부유수·독판군국사무(督辦軍國事務)가 되었다.
1884년 우의정으로 전환국(典圜局)의 혁파, 해외유학생의 소환 등 수구정책을 건의하였으나 실현되지 않았다. 다음 해 좌의정이 되고, 뒤에 총리군국사무(總理軍國事務)가 되었다.
1891년 나이가 많아 벼슬을 사양하고 물러났으며, 청렴결백한 명재상으로 칭송받았다. 저서로는 『속간고(續諫考)』가 있다. 시호는 문헌(文獻)이다.