非対話型のssh sudo…は、プレーンテキストでパスワードを要求する


9

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

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

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

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

回答:


13

使用ssh -t

男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

男須藤

-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ファイルになります)。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.