아버지는 김여관(金汝灌)이다. 평안도 영유현 출생. 집안은 대대로 무반(武班)으로 어릴 때부터 말을 잘 타고 활을 잘 쏘아 영유현의 무학(武學)이 되었다.
1618년(광해군 10) 명나라가 건주위(建州衛: 後金)를 토벌하고자 우리 나라에 원병을 청하여왔을 때 19세의 나이로 좌영장(左營將) 김응하(金應河)의 선봉으로 출전하였으나 패배하여 건주위의 장수 아라나(阿羅那)의 종이 되었다.
1625년(인조 3) 명나라 사람 전유년(田有年)과 탈출하여 등주(登州)에서 살다가 1631년 진하사(進賀使)의 선편으로 귀국하였다.
병자호란 후 1640년 청나라가 개주(蓋州)를 공략하기 위하여 원병을 청해오자 중국어를 잘한다 하여 상장(上將) 임경업(林慶業)에게 선발되어 수군(水軍) 5000명과 함께 출전하였으며, 이듬해 유림(柳琳)의 휘하로 참전하였으며 청나라 장수 아라나에게 포로가 되었으나 유림이 죄를 대신하여 속죄함으로써 풀려났다.
1658년(효종 9) 조정에서 자모산성(慈母山城)을 수축하고 수졸(守卒)을 모집할 때 네 아들과 함께 이미 60세가 넘은 나이로 응모하여 20여 년 동안 성을 지키다 죽었다.
청나라의 포로가 되었을 때 아라나의 일족과 결혼하여 아들 둘을 두었으나, 결국 탈출하여 다시 등주에 머무르면서 전유년의 누이에게 장가들어 두 아들을 두었다. 그러나 조국을 떠날 때 할아버지에게 꼭 돌아오겠다고 한 약속을 잊지 않고 끝내 귀국하였다.