psshコマンドについて

今回の記事ではLinuxコマンドのpsshについて紹介します。

psshとは

psshはParallel Secure Shellの略称で複数のホストに対してリモートでコマンドを実行できるコマンドです。 並行してsshコマンドを実行するイメージになります。
複数ホストへ配信した資材を確認したり、複数ホストのログを確認したりするときなどの用途で活用できます。
psshをパスワード認証で使用するには、接続先のsshサーバでsshdが起動しており、sshクライアントの~/.ssh/known_hostsにsshサーバの公開鍵が登録されている必要があります。

psshのインストール

psshコマンドはdnfコマンドでインストールできます。

# dnf -y install pssh

pssh実行

psshコマンドの構文は以下です。

$ pssh [OPTION] [command] 

私がよく使うオプションを以下に列挙します。

  • -h HOST_FILE, --hosts=HOST_FILE
     接続先ホスト一覧を記述したHOST_FILEを指定
     HOST_FILEには接続先ホストのログインユーザとホスト名またはIPアドレスを指定  ※ログインユーザの指定 [user@] は省略可能
user@hostname
user@xxx.xxx.xxx.xxx
  • -l USER, --user=USER
     sshログインするユーザを指定

  • -A, --askpass
     pssh実行時にログインパスワードを尋ねる
     ※sshログイン時にパスワード認証が必須の場合に指定

  • -i "コマンド"
     接続先ホストで引数に指定したコマンドを実行



192.168.10.10~192.168.10.12にhogeユーザでログインしてdfでディスク状況を確認するpssh実行サンプルは以下になります。 サンプルでは192.168.10.11は認証エラーでNG、他ホストは認証成功でdf結果を標準出力しています。

$ cat hostlist.txt
hoge@192.168.10.10
hoge@192.168.10.11
hoge@192.168.10.12

$ pssh -h hostlist.txt -A -i "df"
Warning: do not enter your password if anyone else has superuser
privileges or access to your account.
Password:                          #パスワードを入力
[1] 13:34:09 [SUCCESS] hoge@192.168.10.10
Filesystem              1K-blocks    Used Available Use% Mounted on
/dev/mapper/rhel-root    17141760 1909264 15232496   12% /
/dev/nvme0n1p2             983040  307916   675124   32% /boot
/dev/nvme0n1p1             613184    7204   605980    2% /boot/efi
[2] 13:34:09 [FAILURE] hoge@192.168.10.11 Exited with error code 255
Stderr: Permission denied (publishkey, password
[3] 13:34:09 [SUCCESS] hoge@192.168.10.13
Filesystem              1K-blocks    Used Available Use% Mounted on
/dev/mapper/rhel-root    17141760 5142528 11999232   30% /
/dev/nvme0n1p2             983040  307916   675124   32% /boot
/dev/nvme0n1p1             613184    9312   605980    3% /boot/efi

まとめ

今回はpsshコマンドを紹介しました。
複数のホストに同じ処理を一括で実行する場合は非常に有用なので、ぜひ覚えて使ってみてください。