いくつかの非対話型のsshコマンドを実行しています。 ssh認証はsshエージェントを介して正常に処理されますが、Sudoを必要とするコマンドを実行すると、端末のパスワードプロンプトはプレーンテキストになります。例えば:
ssh remotemachine "Sudo -u www mkdir -p /path/to/new/folder"
プレーンテキストでパスワードの入力を求められます。通常の安全なプロンプトを使用する方法や、スイッチを介してパスワードを渡す方法を知っている人はいますか? (コマンドを送信する前に、こちら側に安全なプロンプトを設定できます)
どんな助けでも大歓迎です。
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
ファイルになります)。