packet_write_wait 파이프가 끊어 지더라도 상단이 계속 작동합니까?


26

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

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

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

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

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

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

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

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


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

나는 방금 이사했고 이것은 나의 새로운 연결로 끊임없이 일어나고 있습니다. Cox Cable은 ISP이며 설치시 기본 설정으로 실행되는 Netgear C6300BD 케이블 모뎀이 있습니다. 이것은 예전의 위치에서 발생했으며 결코 해결할 수 없었습니다. 몇 달 동안 지속되어 결국 중단되었습니다. 오늘까지 얼마나 비참하고 해결할 수 없는지 잊었습니다.
T. Brian Jones

네 아픔이 느껴져. 나는 모든 하드웨어를 작은 조각으로 치기 전에 마지막 수단으로 여기에 왔습니다. 이것은 상당히 간단한 프로토콜이 아닌가?
DerpyNerd

내가 가상화 리눅스에서 같은 오류가 발생한 문제는 브리지에 이더넷 어댑터를 변경 해결
아벨 바리오스

답변:


8

2018 년 이후 독자 여러분,

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

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

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

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

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

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

행복한 ssh'ing!


3

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

Host *
     IPQoS throughput

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


재미, 그것은 명령 줄에서 작동하지만 (ubuntu의 게시물에서 설명
했듯이)

1

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

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

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

지정된대로 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에서 응답했습니다 .


4.4 LTS를 항상 사용했기 때문에 커널은 문제가되지 않습니다. 여기서 실제 문제는 @MelBursan이 질문에 대한 답변으로 답변했습니다. VPN을 사용하는 인터넷 연결이 그 이유입니다. 해결책 : mosh.org
Toan Nguyen

@ToanNguyen Ok. 그러면 질문에 대한 답변으로 자신의 의견을 적고 고정 된 것으로 표시 할 수 있습니까? :-) mosh가 필요한 기술적 인 이유를 발견 한 경우 :-)를 추가하십시오. 내 편에는 VPN 연결도 있으며이 기능은 완벽하게 작동합니다.
wget

나는 다시 돌아오고있다. 문제는 버그가있는 커널 때문이 아니라 버그가있는 드라이버, 특히 하드웨어 체크섬 오프로드 전용 부분 때문이었습니다. 자세한 내용은 이 스레드를 참조하십시오 .
wget

문제가 해결 되었습니까?
Toan Nguyen

@ToanNguyen 실제로이 문제가 마지막으로 발생했을 때 커널을 다운 그레이드하고 다시 작동했습니다. 이제는 아무것도 다운 그레이드하지 않고 hw 체크섬 오프로드를 비활성화하고 문제를 해결했습니다.
도착 :

1

ssh -o IPQoS=throughput user@{ip}


사용자가 macOS를 사용 중이거나 루트로 로그인하려고한다는 표시는 없습니다.
Kusalananda

당신은 맞습니다! 그러나 'root'와 다른 사용자와 Windows에서 명령을 테스트했습니다. 여전히 작동합니다!
vicky penkova

0

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

sudo nano /etc/ssh/ssh.config

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

ClientAliveInterval 300

ClientAliveCountMax 2

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

sudo 재부팅

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

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