본관은 청풍(淸風). 자는 우약(雨若). 김세호(金世鎬)의 아들이다.
1870년(고종 7) 정시문과에 병과로 급제하여 1873년 형조참의·영남위유어사(嶺南慰諭御史)를 역임하였고, 1879년과 1888년 두 차례에 걸쳐 이조참의를 역임하였다.
1889년 나주목사로 재직중 9월에 전라도 광양현(光陽縣)지방에서 민란이 일어나, 관청을 파괴하고 관장을 몰아낸 뒤 공금을 탈취하는 등 행패를 부리자, 9월 17일 안핵사(按覈使)로 임명되어 10월 14일 민란주동자 정홍기(鄭洪基)·박상룡(朴尙龍) 등을 잡아 효수하였다.
1893년에는 병조참판, 1894년에는 한성부우윤, 1895년 지방관제개혁 뒤 인천부관찰사, 충주부관찰사 겸 충주부재판소판사에 임명되었다. 1896년 2월 유인석(柳麟錫)의 제천의진(堤川義陣)이 충주성을 함락하고 성안으로 들어오자, 남문으로 피신하던 중 중군 종사 오명춘(吳命春)에게 사로잡혀 처형되었다.