ssh越しに鍵認証で色々することがあるのですが、
sudoがttyがなくてssh越しにできなくてタイトルのようなエラーがでて強制終了するという場合、
対策は2通りあって、
いままでvisudoとかでrequirettyを無効にする方法しか知らなかったんですが、
単にsshに-tオプション付けて強制的に仮想端末を割り当てればいいんじゃないのという話です。
----------------------------
Defaults requiretty
----------------------------
↓
----------------------------
#Defaults requiretty
or
Defaults !requiretty
----------------------------
とか、特定のユーザだけ以下のようにしなくても大丈夫だった。
echo -e 'Defaults:user1 !requiretty\nuser1 ALL=(ALL) ALL' > /etc/sudoers.d/user1
sshコマンドに-tオプションつけるだけのほうが設定変えなくて済んでよさそうです。
それだけ。
シェルスクリプト内からの実行だと-t2つつけて成功ということもある模様。