본관은 경주(慶州). 자는 구여(九如), 호는 석세(石世). 할아버지는 좌의정 김사목(金思穆)이고, 아버지는 선공감부정 김영수(金永受)이며, 어머니는 조헌진(曺憲振)의 딸이다.
1825년(순조 25) 생원이 되고, 1827년 증광 문과에 병과로 급제, 승정원가주서(承政院假注書)·설서(說書)·대교(待敎)·좌권독(左勸讀)·문학 등을 역임하였다. 1831년 문례관(問禮官)으로 칙사를 맞이하였고 규장각직각(奎章閣直閣)을 거쳐, 1833년 정조사의 서장관으로 청나라에 다녀왔다.
1838년(헌종 4)에 대사성·이조참의를 거쳐 1842년 영변부사로 나가 여러 가지 선정을 베풀고, 1846년 황해도관찰사로 나가 우리 나라 최초의 신부인 김대건(金大建)을 체포하였다.
이어 공조참판·공조판서·한성판윤 등을 역임하였고, 1849년 철종이 즉위하자 겸지실록사(兼知實錄事)·형조판서·대사헌 등을 거쳐 평안도관찰사가 되어 횡포가 심한 온갖 잡세를 혁파하였으며, 이어 한성판윤·예조판서·좌참판·판의금부사·동지성균관사 등을 역임하였다.
특히, 사학에 밝았고 충신과묵한데다가 공무에 충실하여 지방관으로서의 치적이 많았다. 저서로는 『석세유고(石世遺稿)』가 있다. 시호는 문정(文貞)이다.