다음 구성을 사용하여 여러 호스트에 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
계속 사용할 수 있습니다 .ControlMaster
ControlPath
이미 비슷한 것을 시도했지만 ProxyCommand sh -c "script.sh; ssh %h %p"
성공하지 못했습니다.