본관은 광산(光山). 자는 자준(子峻), 호는 계암(溪巖). 예안 출신. 김효로(金孝盧)의 증손으로, 할아버지는 김유(金綏)이고, 아버지는 현감 김부륜(金富倫)이며, 어머니는 평산 신씨로 부호군(副護軍) 신수민(申壽民)의 딸이다.
임진왜란이 일어나자 17세의 나이로 유성룡(柳成龍)의 막하로 자진 종군했으며, 당시 명나라의 총병사 오유충(吳維忠)과 유격장 노득공(盧得功) 두 사람으로부터 후한 대접을 받았을 정도로 학식이 숙성하였다.
그 뒤 1612년(광해군 4) 증광 문과에 병과로 급제해 승문원에 등용된 뒤 여러 벼슬을 거쳐 주서에 이르렀으나, 광해군의 어지러운 정치를 비관해 관직을 그만두고 낙향하였다. 1618년 인목대비가 폐위되자 두문불출 독서로 나날을 보내었다.
1624년(인조 2) 이괄(李适)의 난이 일어나자 위험을 무릅쓰고 한양으로 인조를 찾아 나섰으나 난이 평정되었다는 소식을 듣고 아들 김요형(金耀亨)을 시켜 소를 올리게 하고서 돌아왔다. 뒤에 신하로서 아들을 시켜 상소하는 것이 도리에 어긋났다는 격렬한 상소가 있었으나 인조가 이를 모두 무마시켰다.
그 뒤로도 학덕을 잊지 못한 인조가 장령·보덕·헌납·사간 등으로 여러 차례 불렀으나 번번이 나가지 않았다. 그러나 병자호란이 일어나 청나라 병사가 남한산성을 포위하자 가산을 모두 털어 의병들의 군량미로 충당했으며, 남한산성이 함락되자 비분강개한 시 몇 편을 남겼다.
벼슬에서 물러나 처음에는 제자들과 경치가 아름다운 곳을 찾아 마음을 달래었다. 그러나 죽을 때까지 마지막 20여 년 간은 문 밖 출입을 삼가며 오가는 사람도 방에 앉아 영접하고 보내, 세상에서 영남의 제1인이라고 불렀다.
1689년(숙종 15)에 도승지에 추증되었고, 영조 때는 원액(院額)이 하사되었다. 저서로는 『계암집(溪巖集)』 6권이 있다. 시호는 문정(文貞)이다.