가끔 SSH 세션이 Write failed: Broken pipe
메시지와 함께 연결이 끊어지는 경우가 있습니다. 무슨 뜻이에요? 세션을 계속 열어두려면 어떻게 해야 하나요?
알아요 screen
. 하지만 그건 제가 원하는 답이 아닙니다. 나는 이것이 sshd
구성 옵션이라고 생각합니다.
답변1
서버가 너무 오랫동안 유휴 상태였던 연결을 닫을 수 있습니다. 클라이언트( ServerAliveInterval
) 또는 서버( ClientAliveInterval
) 를 업데이트할 수 있습니다.
ServerAliveInterval
Sets a timeout interval in seconds after which if no data has
been received from the server, ssh(1) will send a message through
the encrypted channel to request a response from the server. The
default is 0, indicating that these messages will not be sent to
the server. 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.
서버를 업데이트하고 다시 시작하세요 sshd
.
echo "ClientAliveInterval 60" | sudo tee -a /etc/ssh/sshd_config
또는 클라이언트:
echo "ServerAliveInterval 60" >> ~/.ssh/config
답변2
더 긴 연결 시간을 원하면 클라이언트 측에 다음을 추가하세요.
echo 'ServerAliveInterval 30' | tee -a ~/.ssh/config
echo 'ServerAliveCountMax 1200' | tee -a ~/.ssh/config
ServerAliveCountMax
기본적으로 이 값은 3으로 설정됩니다. 따라서 ServerAliveInterval
3개의 정보 패킷이 서버로 전송되면 자동으로 로그아웃됩니다. 1200으로 설정하면 이 프로세스가 최소 1200번 발생해야 함을 의미합니다. 즉, 최소 30*1200초(10시간) 동안 연결되어 있어야 합니다.
답변3
또 다른 해결책은 다음을 사용하는 것입니다.mosh
- 핸드폰 케이스. SSH에 비해 UDP를 통해 연결하고 로밍을 지원합니다. 집에서 세션을 시작하고, 노트북을 일시 중지하고, 인터넷이 연결된 직장/친구/어디서든 가져갈 수 있습니다. 노트북의 일시 중지를 해제하고 아무 일도 없었던 것처럼 작업을 계속할 수 있습니다. 인터넷 연결이 좋지 않은 경우 특히 유용합니다. 키 입력이 서버에 도달하지 않으면 즉시 피드백을 표시하고 지속적으로 연결을 재설정하려고 시도합니다.
설치 및 설정은 간단합니다. 이제 모든 최신 Linux(및 일부 비 Linux 배포판)에 포함되어 있으며 이전 SSH 연결을 통해 세션 초기화 및 인증을 조정합니다. 따라서 via를 통해 연결할 수 있고 양쪽 끝에 mosh 패키지가 설치되어 있으면 ssh user@server
호출만으로 mosh에 연결할 수 있을 가능성이 높습니다.mosh user@server
연결 실패의 주요 원인은 mosh가 제대로 작동하려면 UDP 포트(기본 범위: 60000-61000)를 통해 서버에 액세스해야 하기 때문입니다. 따라서 서버가 방화벽 뒤에 있는 경우 직접 구멍을 뚫을 수 없다면 운이 없는 것입니다(보안 영향).
답변4
이는 일반적으로 네트워크(TCP) 연결이 재설정되었음을 의미합니다. 예를 들어, 귀하의 인터넷 제공업체가 귀하를 다시 연결했거나 이와 유사한 것입니다.