본관은 안동(安東). 자는 공후(公厚), 호는 강우(江右). 할아버지는 대사간 김시찬(金時粲)이고, 아버지는 김방행(金方行)이며, 어머니는 심황(沈鐄)의 딸이다. 형이 우의정 김이교(金履喬)이다.
1789년(정조 13) 진사가 되고, 1790년 증광 문과에 병과로 급제, 초계문신(抄啓文臣: 37세 이하에서 우수한 자를 뽑아 규장각에 소속시키고 공부하게 한 문신)에 발탁되고, 검열(檢閱)·지평(持平)을 거쳤다. 1799년 수찬(修撰)으로 있을 때 시파(時派)로서 벽파(僻派) 죄인이던 정처(鄭妻)의 석방 명령을 거두어줄 것을 네 번이나 상계(上啓: 왕에게 일정한 형식을 갖춘 글을 올림)하였다.
이듬해 이조판서 이만수(李晩秀)의 사직 상소가 마땅치 않다는 소를 올려 언양현(彦陽縣)에 유배되었다가 다시 고금도(古今島)에 안치되었다. 1805년에 풀려나 대사간·이조참의·경상도관찰사·대사성·이조참판을 역임하였다.
개성부유수로 있을 때 풍덕부(豊德府)를 개성에 통합시켜 땅의 경계를 확장, 정비하고 『중경지(中京誌)』를 편찬하였다. 이어 행호군(行護軍)·대사헌·공조판서·형조판서·한성부판윤·좌참찬·예조판서·이조판서까지 이른 뒤 기로소(耆老所)에 들어갔다.
그 뒤에도 계속 좌부빈객(左副賓客)·대사헌·형조판서·예조판서를 역임하였다. 1839년(헌종 5)에 시파와 벽파간의 논쟁으로 경기도 변방에 유배되었다가 풀려나와 다시 상호군·공조판서·이조판서를 지냈다.
당시 시파로 역량있는 중신이었으나, 시파와 벽파간의 싸움으로 벼슬길이 평탄하지 못했다. 판서로 있을 때 『경국대전(經國大典)』을 비롯한 법전에 실린 금고조(禁錮條)를 산개(刪改: 쓸데없는 문장이나 글을 없애거나 고침), 이혁(釐革: 바로잡아 새롭게 함)해 백성의 신원안(伸寃案)을 쉽게 해결할 수 있는 길을 열어주었다. 편서로는 『중경지(中京誌)』가 있다. 시호는 문간(文簡)이다.