본관은 광산(光山). 자는 성극(聖極). 아버지는 병마절도사 김상순(金相順)이다.
일찍이 홍산현감·금천군수 등을 거쳐 1876년(고종 13)에 어영대장에 이르렀다.
1877년 총융사·무위도통사·통제사·금위대장·강화부유수 등을 거쳐, 1882년 임오군란 때에는 흥선대원군이 다시 집권하면서 복설한 삼군부(三軍府)의 지삼군부사(知三軍府事)에 중용되었다. 1884년에는 수원부유수를 거쳐, 같은 해 새로이 설치된 친군영(親軍營)의 우영사(右營使)·별영사(別營使)를 역임한 뒤 병조판서에 이르렀다.
1886년 해방총관이 개칭된 해방영사(海防營使)를 거쳐, 1888년 춘천유수를 지냈다. 시호는 정무(貞武)이다.