상황은 다음과 같습니다. Ubuntu Server 14.04를 실행하는 Linux 서버가 있고 여러 컴퓨터가 서버에 연결하고 SSH를 사용하여 인증한 후 역방향 터널을 열려고 합니다. 이러한 컴퓨터는 일반적으로 인터넷 연결이 매우 안정적이지 않으며 때로는 다시 연결을 시도하지만 Linux 서버는 여전히 이전 세션이 아직 열려 있다고 생각합니다. 그런 다음 컴퓨터는 역방향 터널을 열도록 요청하지만 Linux 서버는 포트에 바인딩된 다른 세션이 아직 있기 때문에 이를 수행할 수 없습니다.
그런 다음 컴퓨터는 5분 정도 기다린 후 다시 시도합니다. 동시에 서버는 포트를 해제하고 두 번째 시도는 성공합니다.
이 모든 것이 잘 작동하지만 내가 원하는 것은 역방향 터널 요청이 들어오고 포트가 이미 사용되면 SSH 데몬이 다른 세션을 종료하고 새 터널을 수락하는 것입니다. 그런 일이 가능합니까?
이것이 가능하다면, SSH 데몬은 바인딩된 프로세스가 다른 SSH 세션인 경우에만 포트를 해제해야 하지만 이는 다른 방법(예: SSHD가 특정 포트만 전달하도록 허용하는 등)으로 수정할 수 있습니다.
도움을 주시면 감사하겠습니다!
PS 동적 포트 번호는 옵션이 아닙니다.
답변1
그렇다면 원격 호스트의 새 연결이 다른 연결을 시작할 수 있도록 하시겠습니까? 이로 인해 다른 클라이언트가 역방향 터널을 적극적으로 사용할 때 문제가 발생할 수 있습니다.
다음을 사용하여 동적으로 선택된 포트를 할당할 수 있습니다.
ssh -R 0:localhost:xxx remotehost
ClientAliveInterval
또 다른 옵션은 /etc/ssh/sshd_config
이 지시어와 함께 이 지시어를 사용하는 것 입니다 ClientAliveCountMax
. 이러한 지시문을 사용하면 서버가 클라이언트 연결이 응답하지 않음을 감지하고 선택한 값에 따라 연결을 닫을 수 있습니다. 예를 들어:
ClientAliveInterval 15
ClientAliveCountMax 3 #default value
응답하지 않는 클라이언트는 약 45초 후에 연결이 끊어집니다.
man sshd_config
자세한 내용은 참조하십시오 .