1929년 충청남도 공주 출생으로, 본관은 동래, 호는 남당(南棠)이다. 공주고등학교를 졸업한 후 서울대학교 법과대학에 입학해 1952년 졸업했다. 서울대학교 행정대학원 및 국방대학원을 수료했다.
1951년 9월 경찰전문학교 6기생으로 경찰이 된 후 1960년 6월 총경이 되었고, 1961년 내무부 치안국 경비과장, 1963년 경무과장이 되었다. 이후 경무관으로 승진해 전라남도 도경국장, 치안국 정보과장, 경상남도 도경국장, 부산시경 제1부국장으로 근무했다. 1971년 6월 치안감 승진과 함께 치안국 공안담당관을 거쳐 6개월 만인 1971년 12월 치안총감으로 승진해 경찰전문학교 출신으로는 최초로 제29대 내무부 치안국장(현 경찰청장)이 되었다.
내무부 치안국장을 끝으로 경찰공무원에서 퇴직한 후 1973년 1월 최종완 도지사의 후임으로 제18대 강원도 도지사로 임명되었고, 1973년 10월에는 민유동 도지사의 후임으로 제15대 충청남도 도지사로 자리를 옮겼다. 1973년 12월 정상천 차관의 후임으로 제30대 내무부 차관으로 발령받아 치안국 직제개정 및 통폐합 작업을 추진했다. 1976년 1월에는 서정화 도지사의 후임으로 제18대 충청남도 도지사로 다시 발령받았다.
충청남도 도지사를 마지막으로 정계에 입문해 제10대 국회의원 선거에 공화당 후보로 출마해 논산·공주 선거구에서 당선되었다. 공화당 사무차장을 역임했으며, 1980년 국가보위 입법회의 의원으로 지명되었다.
민주정의당 창당발기인으로 참여했으며, 1981년 제11대 국회의원 선거에 민주정의당 후보로 출마해 논산·공주 선거구에서 당선되었다. 제11대 국회의원으로 재임하며 민주정의당 충남지부위원장, 정책위원장, 아시아태평양 국회의원연맹 한국대표단장, 한국·도미니카의원친선협회장 등을 역임했다. 1985년 제12대 국회의원 선거에 민주정의당 후보로 출마해 논산·공주 선거구에서당선되었다. 1985년 2월 단행된 내각 개편에서 주영복 장관의 후임으로 제43대 내무부 장관으로 발탁되었으며 1986년 8월까지 재직했다.
1988년 제13대 국회에서는 민주정의당 전국구 의원이 되었으며, 민주정의당 중앙집행위원, 한·일의원연맹 부회장, 민주자유당 당무위원으로 활동했다. 1992년 제14대 국회에서는 민주자유당 전국구 의원이 되어 민주자유당 중앙위원회 의장으로 재직했다. 민주자유당 중앙위원회 의장 재직 중김종필 민주자유당 대표위원이 탈당해 충청권을 기반으로 한 자유민주연합을 창당하자 비례대표 의원직을 버리고 자유민주연합에 합류했다. 이후 자유민주연합 부총재를 역임한 후 제15대 국회에서 자유민주연합 전국구 의원이 되어 국회 국방위원회 위원, 국회 한국노르웨이친선협회장, 국회 통일외교통상위원회 위원으로 활동했다.
제15대 국회까지 6선 의원을 지내고 정계를 은퇴했으며, 건양대학교 이사장으로 활동하던 2009년 6월 8일 사망했다. 상훈으로는 4등 무공훈장, 황조근정훈장 등이 있으며, 2008년 건양대학교에서 명예 행정학 박사학위를 받았다.