SSH接続で、sudo コマンドを使う
ubuntuから、RaspberryPiに接続し、DLNAサーバを再起動しようとしたら
「端末 (tty) が存在せず、パスワードを尋ねる (askpass) プログラムが指定されていません」
というエラーが発生し、実行できなかった。
対策 1
パスワードを要求ぜずに、コマンドを実行するように設定する。
ここでは、特定のユーザに対して特定のコマンド(/bin/systemctl)をパスワードを要求しないで、実行できるように設定を変える
コマンドは、
- ~$ sudo visudo
書式は
(ユーザー) (ホスト)=(誰々として) コマンドフルパス指定
(ユーザー)にグループ指定する場合は、%グループ名で指定する。
コマンドのパスは、whichかtype等で調べることができる
whichは環境変数PATHに設定されているパスからコマンドを調べる。
typeは、指定したコマンドを実行したとき実際どのコマンドが実行されているかを調べる。エイリアス、シェルの組み込みコマンド、PATHで設定されているコマンドを調べる。一度使ったコマンドは、ハッシュ(一時記憶)される。
対策2 SSHのオプションで対応
sudoの設定を変えると、常に、パスワード不要でコマンドを実行できるようになるので、sshにオプション「-t」(仮想的に端末を割り当てる)をつけて実行する
- ~$ ssh -t user@server sudo command
serverにログインする際のパスワードと、serverで、sudo commandを実行する際の2回パスワードを聞かれるが、設定を変えずに実行できる。
ログファイルは、 /var/log/auth.logにたまります。