SSH LocalForwardポートを閉じるか再使用する方法

SSH LocalForwardポートを閉じるか再使用する方法

次の構成を使用して、複数のホストにSSHで接続する必要があります。

Protocol 2
ExitOnForwardFailure yes
ServerAliveCountMax 1
ServerAliveInterval 3
TCPKeepAlive no
ControlMaster auto
ControlPath ~/.ssh/sockets/%C
ControlPersist 10m

Host targetA
  HostName      <server-ip>
  User          user-name
  LocalForward  8888 localhost:8888
  LocalForward  3306 localhost:3306

Host targetB
  HostName      <server-ip>
  User          user-name
  LocalForward  8888 localhost:8888
  LocalForward  3306 localhost:3306

ホストに接続した後にtargetA接続しようとすると、targetB次のエラーが発生します。

bind [127.0.0.1]:8888: Address already in use
channel_setup_fwd_listener_tcpip: cannot listen to port: 8888

targetBしたがって、同じポートに接続して使用するには、次のように既存の8888接続を終了する必要があります3306

lsof -ti:8888,3306 | xargs -L1 kill -9

または

ssh -O exit targetA

これはうまくいきますが、このプロセスを単純化する方法があるかどうか疑問に思います。 .netのエントリを使用して同じポートを使用することに加えて、同じポートとオプションを引き続き~.ssh/config使用できます。ControlMasterControlPath

すでに似たようなことを試しましたが、ProxyCommand sh -c "script.sh; ssh %h %p"成功しませんでした。

関連情報