본관은 경주(慶州). 자는 유선(由善), 호는 송애(松厓). 아버지는 찬성(贊成)에 추증된 김광유(金光裕)이며, 어머니는 송씨(宋氏)로 송남수(宋柟壽)의 딸이다. 이귀(李貴)의 사위이며, 김장생(金長生)의 문인이다.
1624년(인조 2) 별좌(別坐)가 되었으며, 그 뒤 직장(直長)·주부·부여현령을 역임하였다. 1632년 세자익위사익위(世子翊衛司翊衛)로 문과에 급제, 예조정랑을 거쳐 사헌부지평에 임명되었다. 이때 토목공사의 중지를 청하였다가 성균관직강·시강원사서에 좌천되기도 하였다.
이어 사간원정언(司諫院正言)을 역임하였으며, 1636년 병자호란이 일어나자 독전어사(督戰御史)가 되어 왕을 호종하여 남한산성으로 피란하였다. 이듬 해 화의가 이루어지자 벼슬을 그만두고 회덕으로 돌아가 생활하였다.
그 뒤 여러 차례 대간에 임명되고, 서장관(書狀官)으로 뽑혔으나 부임하지 않았기 때문에 금교역(金郊驛)에 유배되었다가 풀려났다. 1648년 승지로 발탁되었으나 끝내 사양하였다.
1649년 대사간이 되어 육조소(六條疏)를 올렸으며, 또한 김자점(金自點)의 잘못을 탄핵하기도 하였다. 1650년(효종 1) 충청도관찰사가 되어 군사력 배양에 힘썼다.
동문인 송시열(宋時烈)·송준길(宋浚吉)·김집(金集)과 교유하였으며, 출처와 의리에 분명하였다. 좌찬성에 추증되었으며, 시호는 문정(文貞)이다. 회덕의 정절서원(靖節書院)에 봉향되었고, 저서로는 『송애집(松厓集)』이 있다.