“쓰기 실패 : 파이프가 끊어짐”으로 SSH 연결이 정지됨


12

Ubuntu 11.04 시스템에서 SSH를 통해 CentOS 5.5 상자에 연결하고 있습니다.

연결이 활성 상태 일 때 (예 : 지연 또는 손실 없음) 예상대로 작동하는 것처럼 보이지만 잠시 동안 비활성 상태로두면 연결이 끊어지고 응답하지 않습니다. 결국 "쓰기 실패 : 파이프가 끊어졌습니다"라는 오류 메시지가 표시되고 로컬 컴퓨터의 프롬프트로 돌아갑니다.

이 문제를 디버깅하고 어떤 일이 발생하는지 확인하고이를 해결하기 위해 어떤 종류의 작업을 수행 할 수 있습니까? 개발자이기 때문에 내 인생을 끊임없이 다시 연결 해야하는 고통이 있습니다.

답변:


15

CentOS 상자의 SSHD 구성이 클라이언트 KeepAlive를 수행하도록 설정되지 않은 것 같습니다.

CentOS sshd 구성 (/ etc / ssh / sshd_config)에서이 두 줄을 삭제하고 다시 시작하여 즐기십시오!

KeepAlive yes
ClientAliveInterval 60

screen세션을 진행 하는 동안 gnu 를 사용 하여 CentOS 측에서 세션 을 활성 상태 로 유지하는 것이 좋습니다 .


1
KeepAlive는 TCPKeepAlive로 이름이 바뀌 었으며 기본값 인 yes로 남겨 둘 수 있습니다. ClientAliveInterval이 충분해야합니다. 참조하십시오 man sshd_config.
ypid

9

실제 대답은 거의 항상 경로에 일종의 NAT 장치가 있다는 것입니다. 일반적으로 방화벽은 상태 테이블이 상당히 공격적인 시간 제한을 갖습니다. 일정 기간 동안 ssh 연결을 유휴 상태로두기 때문에 NAT 장치는 내부 주소와 소스 포트 번호, 임시 외부 NAT 주소와 포트 번호 간의 매핑을 "잊어 버립니다".

나중에 해당 ssh 창에서 무언가를 시도하면 대상 ssh 서버가 알지 못하고 응답하지 않는 새로운 임시 주소 / 포트 쌍이 할당됩니다. 나중에 일부 로컬 시간 초과에 도달하면 로컬 컴퓨터에서 연결이 끊어집니다.

이를위한 실질적인 해결책은 yuriismaster가 제안한대로 정확하게 수행하는 것입니다. KeepAlives (상태 테이블 항목을 "트럭"하기 위해 정기적 인 트래픽을 보장 함)를 활성화 screen하고 원격에서 사용합니다 (이벤트가 중단되는 경우 상태를 보존하기 위해). 나는 당신이 무슨 일이 일어나고 있는지, 무엇을 해야하는지 묻기 때문에이 답변을 게시합니다. 바라건대 이것이 yuriismaster의 제안이 좋은 이유가 무엇인지 분명히 밝힙니다.


그것은 완벽하게 이해됩니다! 이 상자에 대해 DMZ 설정이있는 NAT가 있습니다. 시간 초과 구성을 시도해보고 그것이 효과가 있는지 확인하겠습니다. 감사합니다 :)
Stephen RC

문제의 원인을 이해하도록 도와 주신 것에 동의합니다. 그러나 수정을 위해서는 크레딧이 @yuriismaster로 이동해야합니다.
Stephen RC

Valorin : 물론 그렇습니다. 솔직히 말해서, 그는 나보다 더 받아 들일 가치가 있다고 생각합니다. 그러나 그것은 당신의 질문이므로, 당신이 적합하다고 생각하는대로 가야합니다. 어느 쪽이든 피드백에 감사드립니다.
MadHatter
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.