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