packet_write_wait 파이프가 끊어 지더라도 상단이 계속 작동합니까? 못했습니다. 글쎄, SSH에 성공적으로 인증 된 후

이 피의 오류로 인해 매일 두통이 점점 커지고 있습니다. 나는 이번과 같은 상황을 결코 만나지 못했습니다.

글쎄, SSH에 성공적으로 인증 된 후 몇 가지 작업을 수행 한 다음 SSH 연결이 갑자기 끊어졌습니다!?

내 오류 메시지는 다음과 같습니다. packet_write_wait: Connection to XXX.XX.XX.XXX: Broken pipe

내 오류 메시지가 다음과 같이 표시되기를 바랍니다 Write Failed: broken pipe.

추가 된 ServerAliveInterval, ServerAliveCountMax, ClientAlive와 같은 인터넷에서 수많은 해결책을 시도했습니다 ….

누군가가 말했다 : TCPKeepAlive를 아니오로 돌리고 ServerAlive bllah blah 바보를 추가했습니다. 나는 또한 그렇게했지만 여전히 같은 오류입니다.

지금까지는 운이 없습니다.

도움을 주시면 감사하겠습니다.



답변

2018 년 이후 독자 여러분,

MelBurslan의 의견을 보여 드리겠습니다.

회사 환경에있는 경우 방화벽 관리자에게 문의하여 규칙 변경 및 / 또는 방화벽 변경이 발생한 경우 방화벽을 다시 시작했는지 확인하십시오. 개인 서버에서 발생하는 경우이 문제가 발생했을 때 sshd 서버 측에서 수행 한 작업에 대한 자세한 정보를 제공해야합니다. 파이프가 파손되면 일반적으로 어떤 이유로 네트워크 연결이 끊어 졌음을 의미합니다.

기본적으로 ssh username@0.0.0.0VPN (기업 환경)을 통해 사용하려는 경우 . 그런 다음이 오류는 계속 당신과 함께 있어야합니다.

지금까지 찾은 유일한 솔루션mobile-shell 입니다. 누가 만들 었는지 감사합니다.

당신은 설치해야합니다 mosh-server대상 및 (당신이 ssh’ed 할 서버)에 mosh-client호스트 컴퓨터에.

패킷이 손실되면 자동으로 다시 연결됩니다. 매우 시원하고 모든 요구에 적합합니다.

행복한 ssh’ing!


답변

VMware Guest 설정에서 IPQoS 옵션 문제임을 발견했습니다. VM에서 IPQoS의 ~ / .ssh / config 값을 “IPQoS af21 cs1″의 기본값에서 낮은 대기 시간 데이터 인 대화식 첫 번째 작업과 두 번째 비 대화식 작업에 대한 노력을 줄였습니다. af21에 대한 새로운 가치를 설정하는 것이 나의 해결책이었습니다.

Host *
     IPQoS throughput

나를 위해 일했습니다. 그렇지 않으면 예 MoSH도 작동하지만 mosh는 편리한 방법으로 프록시 설정을 처리하지 않으므로 ProxyJump 명령을 사용합니다.


답변

먼저 문제 가이 문제와 관련이 없는지 확인하십시오 .

그렇지 않은 경우에도 문제가 지속되면 계속 읽으십시오.

나는이 문제도 경험했고 며칠 동안 그것을 양분하려고했습니다.

지정된대로 SSH KeepAlive 매개 변수 또는 커널 TCP 매개 변수 (TCPKeepAlive on / off)로 재생해도 문제가 해결되지 않습니다.

USB- 이더넷 드라이버 및 TCP 덤프로 재생 한 후 문제가 커널 4.8로 인한 것임을 깨달았습니다. 소스 (송신 측)를 4.4 LTS로 전환했는데 문제가 사라졌습니다 (rsync, scp가 다시 잘 작동했습니다). 원하는 경우 대상 측은 4.8로 유지 될 수 있습니다. 사용 사례에서는 이것이 작동했습니다 (테스트).

기술적 인 측면에서, 아래에 만든 wireshark 덤프 덕분에 문제를 약간 좁힐 수 있습니다. SSHv2 프로토콜의 TCP 채널이 재설정되고 (TCP의 RST 플래그가 1로 설정 됨) 연결이 중단되는 것을 볼 수 있습니다. 나는 RST의 원인을 아직 모른다. 이를 위해 4.8.1에서 4.8.11로 이등분해야합니다.여기에 이미지 설명을 입력하십시오

나는 당신의 문제가 특별히 커널 4.8 때문이라고 말하지는 않지만 wrt입니다. 질문 / 메시지를 게시 한 날짜에 실제로 버그가있는 커널 버전을 사용했을 수 있습니다.

처음에 StackOverflow에서 응답했습니다 .


답변

ssh -o IPQoS=throughput user@{ip}


답변

아래 명령으로 대상 서버에서 ssh.config 파일을 엽니 다.

sudo nano /etc/ssh/ssh.config

해당 파일의 끝에 아래 줄을 추가하십시오

ClientAliveInterval 300

ClientAliveCountMax 2

Ctrl + o를 누르고 입력하십시오.

sudo 재부팅

이것은 나를 위해 잘 작동했습니다. 나는 같은 상황에 있었다. 이것과 그것을 시도했지만 다음 단계를 따르십시오. 만이. 나는 그것이 당신에게도 효과가 있기를 바랍니다.


답변