본관은 연안(延安). 자는 원약(元若), 호는 약산(藥山). 할아버지는 김재옥(金載玉)이며, 아버지는 김영(金鍈)이다. 목사(牧使) 김횡(金鑅)에게 입양되었다.
1844년(헌종 10) 증광 문과에 병과로 급제, 초계문신(抄啓文臣: 37세 이하에서 우수한 자를 뽑아 규장각에 소속시키고 공부하게 한 문신)에 발탁되었고, 1862년(철종 12) 이조참의·예방승지·이조참판을 역임한 뒤 1866년(고종 3) 함경도관찰사로 나가 변경방비 및 국경통상 등 여러가지 문제를 처리하였다.
1868년 형조판서를 거쳐 이듬해 정사로 청나라에 다녀왔고, 이어 한성부판윤·대사헌·반송사(伴送使) 등을 거쳐 관북지방 안무사(按撫使)로 나가 많은 폐단을 바로잡는 데 공이 컸다.
1880년에 다시 함경도관찰사가 되었고 이후 호조판서·변리통리내무아문사무(辨理統理內務衙門事務)·독판군국사무(督辦軍國事務)·판의금부사·공조판서·이조판서 등을 거쳐 우의정에 이르렀고, 판중추부사로 죽었다.
관력 42년에 그 자세가 중후, 신중하였고 나라에 대한 충성이 절실하였으며, 특히 관북지방 통치에 업적이 컸다. 시호는 정익(貞翼)이다.