web-dev-qa-db-ja.com

非対話型のsshSudo ...はプレーンテキストでパスワードの入力を求めます

いくつかの非対話型のsshコマンドを実行しています。 ssh認証はsshエージェントを介して正常に処理されますが、Sudoを必要とするコマンドを実行すると、端末のパスワードプロンプトはプレーンテキストになります。例えば:

ssh remotemachine "Sudo -u www mkdir -p /path/to/new/folder"

プレーンテキストでパスワードの入力を求められます。通常の安全なプロンプトを使用する方法や、スイッチを介してパスワードを渡す方法を知っている人はいますか? (コマンドを送信する前に、こちら側に安全なプロンプトを設定できます)

どんな助けでも大歓迎です。

9
Iain

ssh -tを使用します:

man ssh

-t   Force pseudo-tty allocation. This can be used to execute arbitrary 
     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.

だからあなたのコマンドは

ssh remotemachine -t "Sudo -u www mkdir -p /path/to/new/folder"

パスワードを入力したくない場合は、コマンドsudoersを使用してvisudoを変更できます(許可されている場合)。

たとえば、パラメータNOPASSWD:を追加します

username ALL=(ALL) NOPASSWD: /bin/mkdir

/ etc/sudoersを編集できない場合は、Sudo -Sを使用できます。

man Sudo

-S      The -S (stdin) option causes Sudo to read the password from
        the standard input instead of the terminal device.  The
        password must be followed by a newline character.

それで、コマンドは

echo "your_password" | ssh remotemachine -t \
     "Sudo -S -u www mkdir -p /path/to/new/folder"

これにより、シェルのコマンド履歴にパスワードが追加されることに注意してください(bashを使用すると、~/.bash_historyファイルになります)。

13
Olli