systemctlを使用してリモートホストの非対話型コマンドのパスワードを指定するにはどうすればよいですか?

systemctlを使用してリモートホストの非対話型コマンドのパスワードを指定するにはどうすればよいですか?

これが私がしたいことです。複数のホストに分散されたサービス用の.serviceファイルセットがあります。スクリプトを実行するときに、各ホストのルートパスワードを入力せずにすべてのサービスを開始または停止できるシェルスクリプトを作成したいと思います。

たとえば、スクリプトは次のコマンドを実行します。

systemctl -H host1 start service1.service

--no-ask-password オプションがありますが、これは systemctl を実行するためにオペレーティング システムを認証するのではなく、サービス デバイスが要求したときにパスワードを要求したり提供したりしないためです。

つまり、異なる認証方法が別のホストで同じユーザーを自動的に認証できない状況でパスワードを指定しようとします(例:-P {passwd}オプションがある場合)。

誰もが私がこれを達成する方法についてのアイデアを持っていますか?

答え1

「コマンドラインにパスワードを入力すること」は非常に悪い考えです。sshこれを処理できます。

manで作成した多くのページを読んでくださいman -k ssh

その後、実行すると次のようにsshなりますssh-add

man ssh-copy-id各クライアントノードにIDをコピーするには読んでください。sshroot

今すぐssh -l root client1 systemctl ...利用可能です。

自動化をさらに進化させるには、読んでくださいman ssh_config

たとえば、エイリアスを追加します。

alias c1="ssh -l root client1"
# usage:  c1 systemctl ...
#
 alias c1sys= "ssh -l root client1 systemctl ..."

あなたのための~/.bashrc

関連情報