如何关闭/重用 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

这可行,但想知道是否有一种方法可以简化此过程,可能使用 中的某些内容,并除了仍然使用相同的端口之外~.ssh/config继续拥有ControlMaster和选项。ControlPath

已经尝试过类似的事情ProxyCommand sh -c "script.sh; ssh %h %p"但没有成功。

相关内容