본관은 함종(咸從). 자는 정보(精甫) 또는 인지(鱗之), 호는 신암(愼菴). 경기도관찰사 어진익(魚震翼)의 증손으로, 할아버지는 우윤(右尹) 어사형(魚史衡)이고, 아버지는 영돈녕부사(領敦寧府事) 어유구(魚有龜)이다. 어머니는 김동열(金東說)의 딸이다. 당대 명망 있는 학자인 큰아버지 어유봉(魚有鳳)으로부터 수학하였다.
1761년(영조 37) 음보로 목릉참봉(穆陵參奉)에 임명되었다. 그 뒤 통천군수를 거쳐, 1767년 창평군수로서 생원시에 합격하였고, 이듬해 식년문과에 을과로 급제하였다. 1768년에 승지가 되고, 1771년에는 도승지에 올랐다. 그 뒤 병조참판·병조참의·부총관·도승지, 병조와 호조의 참판, 한성부의 좌윤과 우윤 등을 역임하였고, 외직으로는 청송·장단·월성·천안·성천 등지의 부사와 평안병우후(平安兵虞候)를 역임하였다.
1788년(정조 12)에 동지부사로 청나라에 다녀오고, 1790년에는 안변부사로 재직 중 암행어사 서영보(徐榮輔)의 탄핵을 받아 파직되었으나 곧 재기용되었다. 1792년 도총관(都摠管)에 이어 공조판서에 이르렀다. 저서로는 『신암집』 2권이 있다.