역방향 ssh 터널이 갑자기 / 정치적으로 끊어 질 때 SSH 서버에서 포트를 해제하는 방법은 무엇입니까?


19

우리는 고객의 위치에 몇 가지 하드웨어를 설치하고 있으며,이 하드웨어는 ssh 서버에 연결하고 역방향 ssh 터널을 설정하여 모니터링 목적으로 여러 클라이언트 시스템에 액세스 할 수 있습니다.

SSH 세션의 부정한 연결이 끊어 질 때까지 모든 것이 잘 작동합니다.

이 경우 SSH 서버에서 리버스 터널에 사용 된 포트는 LISTENING 모드에 머물러 있으며 원격 하드웨어가 자동으로 다시 연결하고 터널을 다시 설정하려고하면 오류와 함께 실패합니다.

경고 : 수신 포트 XXXX에 대한 원격 포트 전달에 실패했습니다

SSH 서버 또는 클라이언트에 문제가 없는지 테스트 한 후 연결을 끊고 포트를 올바르게 해제하는 과정을 시도했습니다. 연결 실패를 시뮬레이션 할 때 (예를 들어 클라이언트 하드웨어의 이더넷 포트 연결 끊기) 위에서 설명한 것과 동일한 문제가 있습니다.

이 상황을 처리하는 올바른 방법은 무엇입니까? 이것들은 역 터널링이므로 SSH 서버에서 수행해야 할 모든 작업을 명심하십시오. 터널을 호스팅하는 SSH 세션이 중단되었다는 것을 즉시 인식하고 사용중인 포트를 해제하려면 ssh 서버가 이상적입니다. 솔루션에 관련 SSH 프로세스를 종료하는 것이 포함될 수 있지만 여러 클라이언트가 동일한 ssh 서버에 연결되어 있으므로 오프라인으로 킥오프하고 싶지 않기 때문에 조심해야합니다.

너무 성숙해서 SSHD에는 이것을 처리하는 일종의 내장 기능이 있지만 확실하게 이해할 수는 없습니다.

Windows 상자 관리로 돌아갈 필요가 없도록 조언하십시오 ...

참고 : 저는 이것을 데비안 기반 배포판에서 실행하고 있습니다.

답변:


18

에서 사용해야 ClientAliveInterval합니다 sshd_config.

ClientAliveInterval 15

참조 : man sshd_config

ClientAliveCountMax
         Sets the number of client alive messages (see below) which may be
         sent without sshd(8) receiving any messages back from the client.
         If this threshold is reached while client alive messages are
         being sent, sshd will disconnect the client, terminating the
         session.  It is important to note that the use of client alive
         messages is very different from TCPKeepAlive (below).  The client
         alive messages are sent through the encrypted channel and
         therefore will not be spoofable.  The TCP keepalive option
         enabled by TCPKeepAlive is spoofable.  The client alive mechanism
         is valuable when the client or server depend on knowing when a
         connection has become inactive.

         The default value is 3.  If ClientAliveInterval (see below) is
         set to 15, and ClientAliveCountMax is left at the default,
         unresponsive SSH clients will be disconnected after approximately
         45 seconds.  This option applies to protocol version 2 only.

 ClientAliveInterval
         Sets a timeout interval in seconds after which if no data has
         been received from the client, sshd(8) will send a message
         through the encrypted channel to request a response from the
         client.  The default is 0, indicating that these messages will
         not be sent to the client.  This option applies to protocol
         version 2 only.

클레멘트 감사합니다. 서버에서 설정하는 방법을 살펴 보겠습니다.
TCZ

완료하고 테스트하여 아름답게 작동합니다. 대단히 감사합니다.
TCZ
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.