sudoコマンドを実行するためにリモートサーバーにパスワードを安全に渡す方法

sudoコマンドを実行するためにリモートサーバーにパスワードを安全に渡す方法

リモートサーバーでsudoコマンドを実行するコマンドで終わる長いbashスクリプトがあります。

10 hours of local processing
ssh user@ip "sudo ls"

私はサーバーに接続するためにSSHキーを設定しましたが、うまくいきますが、sudoコマンドを実行するのに十分ではありません。また、このコマンドはスクリプトの末尾にあるため、sudoパスワードの対話型プロンプトを待ちたくありません。理想的には、スクリプトの先頭にパスワードの入力を求め、このパスワードを変数に保存してから、この変数をsshコマンドに渡してリモートサーバーでsudoコマンドを実行したいと思います。

これが私が付いているところです。私はこれについての多くの記事を読んだが、その半分はこれを使用することを提案した。

ssh $HOST 'echo $PASSWORD | sudo -S $COMMMAND'

これは私のパスワードを公開するので危険です。

これが実際に唯一の2つの解決策ですか?

ベストアンサー1

起動時に追加できsudo --validate、起動時にパスワードを要求し、15分間キャッシュ(デフォルト)します。

編集して/etc/sudoers例外(パスワードなしで実行できるコマンド)を追加できます。 (適切ではない可能性があります。)

プロセス全体をルートとして実行し、権限を削除してサブシェルを実行できます。ルートシェルは、そのタスクを実行する前にサブシェルが完了するのを待ちます。

ルートとして接続できるように、ルートのSSHキーを追加してください。

おすすめ記事