ttt

getttyent

(FreeBSD) ssh sudoでドキっとした話

2009-03-13 23:51:52 | デジタル・インターネット

最近sudoを使うようになったんですが、先日、なんとなく、

ssh リモートホスト sudo コマンド~

というコマンドを実行したら

200903131

あらあら、パスワードがまるみえ!

パスワード入力時は、画面にエコーバックされないはずなのに、なぜか、全部、表示されちゃいます。

これって、端末(pseudo tty)のせいですよね、きっと。

おそらく、キー入力したとき、画面にその文字をエコーバックさせないように、sudoがttyの設定を変更するんだけど、sshの引数にコマンドを指定した場合は、sshがttyを割り振ってないので、エコーバックさせないようにできてない・・・、つまりエコーバックしちゃう、と。

どうすりゃいいのかっていうと、どうやら、sshに「-t」オプションをつければよいみたいです。

ssh -t リモートホスト sudo コマンド~

という感じ。

 

200903132

今度は、パスワードがエコーバックされません。

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で非対話的にコマンドを実行しようとするときは、同じことが言えると思います。