동일한 포트 전달을 사용하여 여러 SSH 세션을 실행하면 충돌이 발생합니까?

동일한 포트 전달을 사용하여 여러 SSH 세션을 실행하면 충돌이 발생합니까?

내가 열면

ssh -L 8888:localhost:80 myhost

여러 번 클릭하고 페이지를 엽니다.http://localhost:8888/클라이언트에서는 시작된 많은 SSH 세션 중 어느 것을 통해 데이터가 전송됩니까?

고쳐 쓰다

SSH를 두 번째로 실행하면 메시지가 나타납니다.

bind: Address already in use
channel_setup_fwd_listener_tcpip: cannot listen to port: 8008
bind: Address already in use
channel_setup_fwd_listener_tcpip: cannot listen to port: 8888
Could not request local forwarding.

즉, 첫 번째 SSH를 통해서만 전달이 이루어지며, 이를 끄면 전달이 중지됩니다. 즉, 세션을 자유롭게 생성하고 삭제할 수 있습니다.

해결책이 있나요?

답변1

SSH 연결을 공유하면 이 문제를 피할 수 있습니다. 다음과 같은 것을 추가하세요

Host myhost
  ControlMaster auto
  ControlPath ~/.ssh/master-%r@%h:%p
  ControlPersist 2h

귀하의 경우 ~/.ssh/config2시간 동안 임시 연결 공유가 가능해집니다. 그런 다음 포트 전달을 활성화할 때마다 기본 SSH 연결이 열려 있는 한 전달된 포트는 활성 상태로 유지됩니다. 위 구성을 사용하면 마지막 SSH 연결이 닫힌 후 2시간이 됩니다. 해당 ControlPersist줄을 제거하여 마지막 SSH 연결로 닫을 수도 있습니다. 그러나 ssh연결을 끊으면 첫 번째 명령은 실제로 종료되지 않고 대기합니다. 다른 모든 SSH 연결은 종료됩니다.) 두 경우 모두 를 실행하여 연결을 강제로 닫을 수 있습니다 ssh -O exit myhost.

관련 정보