리눅스 SSH 타임 아웃


10

X 분 동안 활동이 없으면 몇 가지 시스템 시간이 초과되어 문제를 해결하는 방법을 모릅니다.

사무실에 CentOS 박스가 있습니다. SSH에 연결하면 2 시간 동안 터치 할 수 없으며 무언가를 실행할 때 여전히 작동합니다.

그러나 집에서 같은 상자에 연결하면 때로는 몇 초 후에 때로는 몇 초 후에 시간 초과됩니다.

인터넷 연결이라고 생각하지만 상자를 적극적으로 사용하면 연결 상태가 유지됩니다.

그러나 Google에 입력을 중지하면 연결이 끊긴 메시지가 표시되고 다시 연결해야합니다.

내가 무슨 일이 일어나고 있는지 확인할 수 있습니까?


4
(이름이없는) 클라이언트에 대한 문서.
user9517

답변:


14

가장 먼저 살펴 봐야 할 것은 ServerAliveInterval을 설정하는 것입니다. 워크 스테이션에서 설정해야합니다.

Linux 또는 OSX 클라이언트에서 워크 스테이션의 ~ / .ssh / config 아래에 사용자의 구성 파일을 작성할 수 있습니다. 다음 지시문을 추가하십시오. 필자의 경우 모든 호스트에 영향을 미치도록 Host * 아래에 두었습니다.

Host *
    ServerAliveInterval 60

연결을 열린 상태로 유지하기 위해 60 초마다 noop 명령을 보냅니다. 필요에 맞게 값을 조정할 수 있습니다.

서버 측에서 TCPKeepAlive가 yes로 설정되어 있는지 확인하십시오.

grep TCPKeepAlive /etc/ssh/sshd_config
TCPKeepAlive yes

Windows를 사용하는 경우 클라이언트 설명서를 참조해야합니다.


11

Linux는 유휴 SSH 연결 시간을 초과하지 않습니다. SSH 연결을 무한정 열린 상태로 둘 수 있으며 엔드 포인트가 재부팅되거나 새 IP 주소를 얻지 않는 한 장시간 유휴 시간 후에 액세스하면 연결이 계속 작동합니다.

그러나 상태 저장 미들 박스 (NAT, 방화벽 등)가 있으면 유휴 연결 시간이 초과 될 수 있습니다. 그 결과 연결이 양쪽 끝에 존재하더라도 SSH 클라이언트가 새 연결을 열 때까지 미들 박스가 패킷 전달을 거부하기 때문에 두 엔드 포인트가 더 이상 통신 할 수 없습니다.

당신이 middlebox의 타임 아웃을 알고 있다면, 당신은 구성하여 문제를 해결할 수 ClientAliveInterval/etc/ssh/sshd_config서버에서 또는 ServerAliveInterval에서 ~/.ssh/config클라이언트. 끊어진 연결을 최적으로 감지하려면 두 설정을 모두 사용하는 것이 좋습니다. 또한 엔드 포인트가 재부팅되거나 새 IP 주소를 얻었을 때 끊어진 연결을 감지합니다.

제한 시간이 때때로 몇 초 정도로 낮은 것으로 나타나기 때문에 문제를 해결하기에 충분하지 않을 수 있습니다. 과부하 또는 잘못 구성된 CGN으로 인해 겉보기 시간 초과가 매우 낮을 수 있습니다. CGN이 장애를 담당하는지 여부를 확인하려면 통신 경로의 다양한 지점에서 트래픽을 검사해야합니다.

ISP가 연결 상태를 공유하지 않는 여러 CGN을 통한 연결로드 밸런싱과 같은 잘못된 작업으로 인해 장애가 발생한 경우 SSH 구성을 조정하여 문제를 직접 해결할 수는 없습니다.

신뢰할 수없는 CGN이있는 ISP가 고정을 거부하는 경우, 내가 아는 유일한 옵션은 MPTCP를 지원하는 클라이언트와 서버를 커널 버전으로 업그레이드하거나 자발적으로 허용되는 터널 솔루션을 사용하는 것입니다. NAT에서 포트 매핑의 변경.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.