はじめに
本記事は複数のLinuxサーバに対してコマンドを実行するための方法について記載しています。
今の時代はクラウドインフラ上でコンテナを動かしているシステムが多いと思いますが、オンプレミス・クラウドに関わらずサーバにSSH接続して作業するケースはあるのではないでしょうか。
2023年2月7日にOpenSSLに複数の脆弱性が公表されました。
脆弱性対応を行うにあたり、様々な環境のサーバを確認する場合は、複数のサーバでコマンドを実行するなど迅速なオペレーションが求めれます。
以下のようなツールを手段として利用することもできますが、日頃から運用してない場合はキャッチアップ及び準備に時間がかかります。
- Ansibleなどの構成管理ツール
- AWS Systems Manager Run Command
本記事では簡単なセットアップだけで、複数のLinuxサーバに対してオペレーション可能なpsshについて紹介します。
pssh
psshはparallel ssh programの略称です。
psshは複数のホストでsshを並行して実行するためのプログラムです。
入力をすべてに送信するなどの機能を提供します。
接続するLinux/UNIX/BSDのサーバ側でsshdのプログラムが起動していれば、並列でコマンドが実行できます。
psshのインストール
MacOS/Debian/RHELなど様々なプラットフォームでインストール可能です。
MacOSの場合は、brewからインストールできます。
$ brew install pssh
セットアップ
psshからホスト名を読み取るために、接続するサーバ情報を記載したテキストファイルが必要です。
ファイル名は任意の名前で大丈夫です。
またテキストファイルの中身は[user@]host[:port]
の形式で、空白行と「#」で始まるコメント行を含めることができます。
例としてホームディレクトリ配下に、.pssh_hosts
を作成します。
$ vi ~/.pssh_hosts
pi@192.168.2.16
kali@192.168.2.17
コマンドの実行
オプションについて-h
は必須でhost_fileを指定し、-i
は標準出力と標準エラーを表示します。
例えば、OpenSSLのバージョンを確認する場合は以下のようにコマンドを実行します。
$ pssh -i -h ~/.pssh_hosts openssl version
[1] 00:48:08 [SUCCESS] kali@192.168.2.17
OpenSSL 3.0.7 1 Nov 2022 (Library: OpenSSL 3.0.7 1 Nov 2022)
[2] 00:48:08 [SUCCESS] pi@192.168.2.16
OpenSSL 1.1.0f 25 May 2017
上記の場合は1台、バージョンが3.0.7と出力されています。
CVE-2022-4203、CVE-2023-0216、CVE-2023-0217、CVE-2023-0401に該当するので、バージョンアップしましょう。
数にもよると思いますが、このように複数サーバに対するオペレーションを簡素化することができます。
また複数のホストにファイルをコピーするなどの操作もできます。
おわりに
昔、オンプレミスのシステム構築では、Tera Termのブロードキャスト機能を活用して、複数のターミナルから同時にコマンドを実行していました。