본관은 안동(安東). 자는 경교(景敎), 호는 영초(潁樵). 김이직(金履直)의 증손으로, 할아버지는 김인순(金麟淳)이고, 아버지는 이조판서 김수근(金洙根)이며, 어머니는 조진택(趙鎭宅)의 딸이다. 철종의 장인인 영은부원군(永恩府院君) 김문근(金汶根)의 조카이다. 김준근(金浚根)에게 입양되었다.
1853년(철종 4) 현감으로 정시 문과의 병과로 급제, 장령(掌令)·사간이 되었다. 곧이어, 안동 김씨의 세도를 배경으로 대사헌·판서 등을 역임하였다. 고종 즉위 후 흥선대원군(興宣大院君)이 안동 김씨의 세도정치를 제거할 때도, 고종 즉위에 은밀히 노력한 공로와 딸을 며느리로 줄 것을 약속한 평소의 친분 때문에 1864년(고종 1) 이조판서에 임명되었다.
이듬해 공조판서가 되었다가 좌찬성을 거쳐 좌의정에 올랐다. 이 해 실록총재관으로 『철종실록(哲宗實錄)』을 편찬하고 조두순(趙斗淳)·이유원(李裕元) 등과 함께 찬집소총재관으로 『대전회통(大典會通)』을 완성하였다.
보수적인 척화론자로서 1866년 병인박해 때 천주교의 탄압을 적극적으로 주장하였다. 또한 병인양요로 민심이 흉흉해지자 흥선대원군을 권고해 당시 척화론을 주장하던 이항로(李恒老)를 승정원동부승지로 등용하도록 천거하였다. 영의정을 거쳐 1875년 영돈녕부사가 된 뒤 조일수호조약(朝日修好條約)의 체결에 극렬하게 반대하였다.
1879년 사망하기 직전에도 판부사 홍순목(洪淳穆)·한계원(韓啓源), 영의정 이최응(李最應), 좌의정 김병국(金炳國) 등과 함께 연차(聯箚: 연맹으로 왕에게 쓴 건의문)를 올려 일본이 요구하는 인천·원산의 개항 가운데 인천만은 서울의 백 리 안에 있으므로 결코 허락해서는 안 된다고 주장하였다. 시호는 문헌(文獻)이다.