본관은 평창(平昌). 자는 자준(子俊). 1470년(성종 1) 무과에 장원으로 급제해 훈련원판관에 임명되었다. 1476년 무과 중시에 급제해 종친부전첨(宗親府典籤)이 되었다가 창성부사로 나갔다.
이 해 10월 일본에 파견된 통신사의 부사로 대마도에 갔다가, 정사 이형원(李亨元)이 병으로 죽자 일을 잘 처리하고 돌아왔다. 같은 해 황해도관찰사로 나가게 되었으나 경력이 없어 동부승지로 임명되었다가, 도원수 윤필상(尹弼商)의 종사관으로 건주위(建州衛)를 정벌하고 돌아와 형조참판에 승진하였다. 1479년 선전관이 되었다.
1480년 주문부사(奏聞副使)로 중국으로 떠나기 전의 사연(賜宴: 베풀어준 향연)에서 불경한 행동으로 전라도 해남현에 유배되었다. 그러나 이듬 해 신하들의 반대를 무릅쓴 성종의 명으로 동지중추부사로 임명되었다. 1482년 여진어에 능통하고 그들의 사정을 잘 안다는 점이 인정되어 함경도절도사로 임명되었다.
이 때 여진을 성심으로 대해 재임 중 그 지역이 안정되었으며, 뒷날 중국에 사신으로 갈 때에는 모련위(毛憐衛)의 여진인들이 늘어서서 인사를 할 정도로 신망을 받았다. 1486년 좌윤이 되어 정조사(正朝使)의 부사로 명나라에 다녀왔으며, 『도상중원교사지법(圖上中原敎射之法)』을 필사해 왕에게 바쳤다.
1487년 형조참판을 거쳐 전라도병마절도사로 나갔다. 1489년 황해도에서 김경의(金京儀)·김막동(金莫同)가 도적을 일으켰을 때 금제사(擒制使)로 파견되어, 구질포지산(仇叱浦只山)을 공격해 우두머리를 체포하는 등 적을 소탕하고 돌아와 포백(布帛)과 무기를 상으로 받았다. 1490년 무과 출신은 어울리지 않는다고 사양했음에도 불구하고 대사헌에 임명되었다.
이듬 해 야인(野人) 이마거(尼麻車)가 조산(造山)에 침입했을 때 윤필상의 추천으로 부원수가 되어, 도원수 허종(許琮)을 보좌해 토벌에 나섰다. 이 때 큰 성과는 없었으나 돌아와 형조판서에 올랐다. 1492년 경기도관찰사로 나갔을 때, 계속된 흉년으로 도둑이 들끓자 연로수직법(沿路守直法)을 만들어 검색을 강화했으나 별다른 효과를 거두지 못하였다.
1494년 지중추부사로서 성종이 죽자 고부사(告訃使)로 명나라에 다녀온 뒤 중국의 무기 통제나 조선에 대한 태도 등에 대해 보고하였다. 1498년(연산군 4) 병조판서에 임명되었으며, 이듬 해 왕명으로 이극균(李克均)과 함께 『서북제번기(西北諸藩記)』와 『서북지도(西北地圖)』를 편찬해 올렸다. 1500년 병으로 병조판서에서 물러났다.
병조판서 재임 시에 특히 북방에 관한 여러 시책에 관심을 기울였고 용의주도한 대비를 하였다. 1504년 우찬성이 되었다가 이듬 해 좌찬성과 영중추부사에 이르렀다. 무신으로 크게 활약했으며 독서에도 힘써, 당시 문무를 겸했다는 칭찬을 들었다 한다. 시호는 헌무(憲武)이다.