最近sudoを使うようになったんですが、先日、なんとなく、
ssh リモートホスト sudo コマンド~
というコマンドを実行したら
あらあら、パスワードがまるみえ!
パスワード入力時は、画面にエコーバックされないはずなのに、なぜか、全部、表示されちゃいます。
これって、端末(pseudo tty)のせいですよね、きっと。
おそらく、キー入力したとき、画面にその文字をエコーバックさせないように、sudoがttyの設定を変更するんだけど、sshの引数にコマンドを指定した場合は、sshがttyを割り振ってないので、エコーバックさせないようにできてない・・・、つまりエコーバックしちゃう、と。
どうすりゃいいのかっていうと、どうやら、sshに「-t」オプションをつければよいみたいです。
ssh -t リモートホスト sudo コマンド~
という感じ。
今度は、パスワードがエコーバックされません。
sshのマニュアルを見ると、-tオプションってのは
-t Force pseudo-tty allocation. This can be used to execute arbi-
trary screen-based programs on a remote machine, which can be
very useful, e.g. when implementing menu services. Multiple -t
options force tty allocation, even if ssh has no local tty.
というわけで、かならずpseudo-ttyを割り当てるよ、ってことらしいです。
sudoだけに限らず、sshで非対話的にコマンドを実行しようとするときは、同じことが言えると思います。
0 件のコメント:
コメントを投稿