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"성공하지 못했습니다.

관련 정보