openSUSE Leap 16

OpenSSH : Parallel SSH を利用する2025/10/15

 

PDSH (Parallel Distributed Shell) を使用して、SSH サーバーが稼働する複数ホストに対して並列で SSH 接続します。

[1] PDSH をインストールします。
dlp:~ #
zypper -n install pdsh pdsh-dshgroup
[2] PDSH の使い方です。
各対象サーバーに対して、パスフレーズ無し鍵ペアで認証可能であることを前提とします。
パスフレーズ付き鍵ペア認証の場合は 事前に SSH-Agent を起動してパスフレーズをセットしておけば、以下と同様の操作で利用可能です。
# 指定のホストに対して SSH 接続し hostname コマンドを実行

suse@dlp:~>
pdsh -w "10.0.0.51 10.0.0.52" "hostname"

10.0.0.52: node02.srv.world
10.0.0.51: node01.srv.world

# 初回アクセス時等でのホストキーチェックをスキップする場合は以下

suse@dlp:~>
PDSH_SSH_ARGS_APPEND="-o StrictHostKeyChecking=no" pdsh -w "10.0.0.51 10.0.0.52" "uptime"

10.0.0.52: Warning: Permanently added '10.0.0.52' (ED25519) to the list of known hosts.
10.0.0.51: Warning: Permanently added '10.0.0.51' (ED25519) to the list of known hosts.
10.0.0.51:  11:44:24  up   1:55,  2 users,  load average: 0.03, 0.01, 0.00
10.0.0.52:  11:44:24  up   0:11,  2 users,  load average: 0.02, 0.02, 0.00

# パッケージ付属の [dshbak] に渡すと表示結果を整形

suse@dlp:~>
pdsh -w "10.0.0.51 10.0.0.52" "uptime" | dshbak

----------------
10.0.0.51
----------------
 12:43:21  up   2:54,  2 users,  load average: 0.06, 0.02, 0.00
----------------
10.0.0.52
----------------
 12:43:21  up   1:10,  2 users,  load average: 0.00, 0.00, 0.00

# 接続先ホストはファイルからも読み込み可能

suse@dlp:~>
mkdir ~/.dsh/group

suse@dlp:~>
vi ~/.dsh/group/nodes
# 接続先ホストを 1 行ごとに記述
10.0.0.51
10.0.0.52

suse@dlp:~>
pdsh -g nodes "uptime"

10.0.0.52: 11:52:43 up 0:19, 2 users, load average: 0.04, 0.01, 0.00
10.0.0.51: 11:52:43 up 2:04, 2 users, load average: 0.02, 0.01, 0.00
[3]
なお、PDSH パッケージには pdsh コマンド以外にも、pdcp, rpdcp も含まれており、 [pdsh option ~] の部分はいずれも pdsh と同様の書式で利用可能です。
関連コンテンツ