본관은 양천(陽川). 자는 헌지(獻之), 호는 이헌(頤軒). 허기(許愭)의 증손으로, 할아버지는 양양도호부사 허비(許扉)이고, 아버지는 군수 허손(許蓀)이며, 어머니는 부녹사 최안선(崔安善)의 딸이다. 우의정 허종(許琮)의 동생이다.
1462년(세조 8) 진사시에 합격하고, 1475년(성종 6) 참봉으로 친시문과에 을과로 급제해 감찰이 되었다. 1476년 채수(蔡壽) 등과 함께 사가독서 문신에 뽑혀 장의사(藏義寺)에서 독서를 했으며, 이후 전적 · 부수찬 · 부교리 등을 역임하였다.
1478년 지평이 된 뒤, 병조정랑 · 지제교(知製敎) 등을 역임하였다. 1482년 진현시(進賢試)에 병과로 급제하고, 필선이 되어 세자의 그릇됨을 깨우치기에 노력하였다. 1488년 보덕이 되었다가 곧 홍문관직제학 겸 예문관응교로 옮겼다. 그리고 이듬해 『삼강행실』을 산정(刪定)하였다.
1490년 동부승지로 초수(超授)되었으며, 같은 해 좌부승지 · 우승지를 역임하였다. 1491년 좌승지, 1492년 전라도관찰사, 1493년 동지중추부사가 되었다가 곧 대사헌으로 자리를 옮겼다. 1494년 예조참판이 되고, 천추사(千秋使)로 명나라에 다녀왔다.
그런 뒤 1498년(연산군 4)까지 병조참판 · 경연특진관(經筵特進官) · 실록청당상 등을 역임했으나, 김일손(金馹孫)의 사초사건에 연루되어 첨지중추부사로 좌천되었다. 이어 경상도관찰사를 거쳐, 1499년 동지중추부사로 동지춘추관사가 되어 영춘추관사 신승선(愼承善) 등과 함께 『성종실록』을 편찬하였다.
1500년 호조참판 · 이조참판을 거쳐, 이듬해 형조참판으로 자리를 옮겼다. 그 뒤 경기도관찰사 · 이조판서를 거쳐, 1503년 우참찬이 되었다. 1504년 우의정 재직 당시 연산군의 생모 윤비(尹妃) 폐출(廢出)에 참여한 많은 사람들이 처벌되는 가운데, 당시 할머니상으로 불참했던 덕에 화를 면하였다. 그 해 좌의정에 올랐다.
조위(曺偉) · 유호인(兪好仁) 등과 교우하면서 성종의 총애를 받았고, 연산군의 폭정을 바로잡지는 못했지만 많은 조신들을 구명하였다. 성종조의 청백리(淸白吏)에 녹선되었다. 시호는 문정(文貞)이다.