質問: 非対話型のsshsudo ...はプレーンテキストでパスワードの入力を求めます いくつかの非対話型の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ファイルになります)。