ファイルパイプを使用した非ルートSSH特権コマンド

ファイルパイプを使用した非ルートSSH特権コマンド

ルートログインが無効なSSHサーバーがあります。実行後にファイルから入力を必要とする特権コマンドを実行したいと思います。ユーザーの介入なしにonelinerコマンドまたはスクリプトを介してすべての操作を実行したいと思います。

キー認証設定があるため、コマンドを実行するときにのみ次のパスワードが必要です。

私が得た最も近いのはこれでした echo "mypass" |ssh -tt user@ip "sudo specialCommand"

出力は次のとおりです。

mypass  
[sudo] password for user: 
specialCommand requests inputfile contents

mypassは以前に印刷され、パスワードプロンプトも許可されました。

commandInputパスワードが承認されたら、パイプで接続したいファイルがあります。

私は推測ゲームに過ぎない様々な試みをしましたが、失敗しました。どうすればこれを達成できますか?

ベストアンサー1

どうですか?

(echo "mypass"; cat commandInput) | ssh -tt user@ip "sudo specialCommand"

または、明らかにsudoリモートホストにアクセスできるので、visudoこの行を/etc/sudoers(using後ろにsudoパスワードアクセスを許可する既存の行user)?

user  ALL=(root) NOPASSWD: /full/path/of/specialCommand

この行は、ユーザー(他の人ではない)に、パスワードなしでuserroot(他のユーザーを除く)として実行する権限を与えます。specialCommandこの行を介して他のコマンドを実行するには、通常sudoどおりパスワードが必要です。

その後、以下を簡単に実行できます。

ssh -tt user@ip "sudo specialCommand" < commandInput

おすすめ記事