본관은 광산(光山). 자는 군수(君粹), 호는 미산(薇山). 할아버지는 김대진(金大振)이고, 아버지는 증 병조참판 김우급(金友伋)이며, 어머니는 유경진(柳景進)의 딸이다.
1624년(인조 2) 식년 문과에 병과로 급제, 학유(學諭)·검열을 역임하였다. 1627년 정묘호란 때 도보로 강화까지 왕을 호종했으며, 환도 후 봉교(奉敎)·전적(典籍)·예조좌랑·병조좌랑·지평(持平) 등을 역임하였다.
1636년 병자호란 때 향리에서 김지수(金地粹)와 함께 싸움터로 가는 도중 체부(體府)의 격문을 보고 함평(咸平)에서 의병을 일으켜 방어에 임하다가 상경했으나, 이미 강화가 성립되어 군사를 해산하였다.
이어 지평·장령(掌令)·정언(正言)·사간·집의(執義)·필선(弼善) 등을 역임하고, 여산군수(礪山郡守)로 나가 기민(飢民)을 구휼하는 데 힘썼다. 봉림대군(鳳林大君)이 세자가 되자 진강(陳講 : 강의함)의 기회를 얻어 극진한 예우를 받았다.
1647년 밀양부사로 나가 현저한 치적을 쌓았으나, 관찰사와 뜻이 맞지 않아 벼슬을 버리고 향리로 돌아갔다. 그 뒤 한성부우윤에 임명되고 부사로 명나라에 다녀왔다. 이어 황해도·충청도의 관찰사가 되었으나 대동법 실시의 불합리성을 주장하다가 체직되었다.
그 뒤 부총관(副摠管)·형조참판을 거쳐 광주부윤이 되었으나 관찰사와 뜻이 맞지 않아 벼슬을 버렸다. 그러다가 형조참판 겸 동지의금부사를 거쳐 판결사(判決事)로 전직해 노비송안(奴婢訟案)을 공정히 처리하였다. 강화유수에 임명되었다가 다시 장례원판결사가 되었으나, 병을 얻어 파산(坡山)의 집으로 돌아가 치유하다가 죽었다.