본관은 광산(光山). 자는 원부(元敷). 서울 출신. 김재홍(金在弘)의 아들이고, 김재청(金在淸)의 양자이다.
1878년 정시문과에 병과로 주1. 1884년 안악군수(安岳郡守)로 있을 때 민요(民擾)가 있자, 황해감사 윤우선(尹宇善)으로부터 문책을 당하였다.
갑신정변 신내각의 병조참의였으며, 1885년부터 1891년까지 한성부좌윤 · 이조참의 · 공조참판 · 대사성 · 형조참판 · 대사헌 · 형조판서 · 예조판서 등을 지냈다. 1893년 동학교도의 보은집회(報恩集會)가 있자 광주부유수(廣州府留守)에서 전라도관찰사로 주2
1894년 2월 고부민란(古阜民亂)이 일어나자 군수 조병갑(趙秉甲)을 체포하는 한편, 고부에 속리를 보내 사건의 주동자인 전봉준(全琫準)을 회유 내지 붙잡도록 하였으나 실패하였다.
그 뒤 동학농민군이 봉기하여 부안군아(扶安郡衙)를 습격하는 등 민란의 규모가 확대되자, 영장(營將) 이광양(李光陽) 등에 명하여 동학농민군을 토벌하게 하였다. 그러나 황토현전투(黃土峴戰鬪)에서 패퇴함으로써 문책, 파면되고 거제도에 주3