tl;dr デプロイツールによっては 同じサーバに SSH で何回もコマンドを実行することがある(ansible とか)。 コマンドごとに毎回コネクション(トンネル)を確立するとオーバーヘッドも大きくなる。 OpenSSH は $HOME/.ssh/config に次の設定を書くことで、接続を多重化(multiplex)することができる。 multiplex 前後の速度差 SSH を使ってリモートサーバで echo コマンドを実行した時の速度差を計測 before multiplex after multiplex 多重化接続してみる 多重化接続の流れ SSH で多重化接続するには ControlMaster=yes で多重化のためのコントロールソケットを作成し 以降の接続では上で作成されたソケットを利用して接続する 多重化接続の設定 必要な設定は以下の3つ ControlMaster 多重化接続方法 ControlPath 多重接続のソケットファイルのパス ControlPersist 多重化接続の永続化設定 ~/.ssh/ssh_config で設定することも、接続のたびにコマンドラインで渡すことも可能。 多重化接続する 動きを確認しやすいように、設定ファイルを利用せずに毎回オプションを渡して多重接続してみる。 まずは ControlMaster=yes にしてコントロールソケットを作成し、 ControlPath でコントロールソケットのパスを指定する。 ソケットファイルが作成されることを確認 以降の接続では作成したコントロールソケットファイルを ControlPath で指定し、モード ControlMaster=no(デフォルト) で接続すると、多重化される。 LISTEN 状態のソケットを確認 $ lsofContinue reading “SSHの多重接続について”