it-swarm-ko.tech

SSH 세션에서 깨진 파이프 메시지는 무엇을 의미합니까?

때때로 내 SSH 세션이 Write failed: Broken pipe 메시지. 무슨 뜻이에요? 세션을 어떻게 열어 둘 수 있습니까?

나는 screen에 대해 알고 있지만, 내가 찾고있는 대답은 아닙니다. 이것이 sshd 구성 옵션이라고 생각합니다.

107
Peter Stuifzand

서버가 너무 오래 유휴 상태 인 연결을 닫을 수 있습니다. 클라이언트 (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 
92
Gert

다른 해결책은 mosh-모바일 쉘 을 사용하는 것입니다. ssh와 달리 UDP를 통해 연결하고 로밍을 지원합니다. 집에서 세션을 시작하고, 노트북을 일시 중지하고, 인터넷이있는 곳 어디에서나 일/친구/휴대용으로 가져 가거나, 노트북을 일시 중지 해제하고, 아무 일도없는 것처럼 계속 작업 할 수 있습니다. 인터넷 연결 상태가 좋지 않은 경우에 특히 유용합니다. 키 입력이 서버에 도달하지 않고 지속적으로 연결을 다시 설정하려고 시도하면 즉시 피드백을 표시합니다.

설치 및 설정은 간단합니다. 이제 모든 현재 Linux (및 일부 비 Linux) 배포에 포함되며 이전 ssh 연결을 통해 세션 초기화 및 인증을 조정합니다. 따라서 ssh [email protected]를 통해 연결할 수있는 경우 mosh 패키지가 양쪽 끝에 설치되어 있으면 mosh [email protected]를 호출하기 만하면 mosh에 연결할 수 있습니다.

연결 실패의 주된 이유는 mosh가 작동하려면 UDP 포트 (기본 범위 : 60000-61000)로 서버에 연결해야하기 때문입니다. 따라서 서버가 방화벽 뒤에있는 경우 직접 구멍을 뚫을 수 없다면 운이 좋지 않습니다 ( security implications ).

6
Perseids

연결 기간을 연장하려면 클라이언트에서 다음을 추가하십시오.

echo 'ServerAliveInterval 30' | tee -a ~/.ssh/config
echo 'ServerAliveCountMax 1200' | tee -a ~/.ssh/config

기본적으로 ServerAliveCountMax는 3으로 설정되어 있습니다. 따라서 ServerAliveInterval에서 3 개의 작은 정보 팩을 서버에 보내면 자동으로 로그 아웃됩니다. 1200으로 설정하면이 프로세스는 1200 회 이상 발생해야합니다. 즉, 최소 30 * 1200 초 (10 시간) 이상 연결해야합니다.

5
Francisco Costa

일반적으로 네트워크 (TCP) 연결이 재설정되었음을 의미합니다. 예 : 인터넷 제공 업체가 귀하 또는 이와 유사한 것을 다시 연결했습니다.

2
maxschlepzig

나는 같은 문제가 있었지만 예상과 다릅니다. 동일한 네트워크에서 다른 서버가 동일한 IP 주소를 찾으려고하면 같은 문제가 발생합니다. 이를 해결하려면 동일한 IP 주소를 사용하는 다른 서버가 있는지 확인해야합니다. arp 명령을 사용하여 수행 할 수 있습니다.

데비안을 사용하고 있으므로 다른 서버가 실제로 동일한 IP 주소를 사용하고 있는지 확인하는 데 사용하는 명령 샘플이 있습니다.

apt-get install arp-scan
arp-scan -I eth0 -l | grep 192.168.1.42
  192.168.1.42 d4:eb:9a:f2:11:a1 (Unknown)
  192.168.1.42 f4:23:a4:38:b5:76 (Unknown) (DUP: 2)

동일한 IP 주소를 사용하는 두 개의 mac 주소 세트를 알 수 있습니다. 하나를 다른 IP 주소로 설정하여 충돌을 피하십시오.

1
Bill Ang

"Broken Pipe 메시지"의 또 다른 원인은 다른 시스템이 호스트와 동일한 IP를 사용하려고하기 때문입니다.

다른 사람이 해당 IP를 사용하고 있는지 테스트하는 간단한 방법 :

  1. 호스트를 끄십시오
  2. 동일한 IP를 핑하여 다른 시스템이 해당 IP를 사용 중인지 확인

네트워크에있는 머신을 찾으려면 다음 Unix & Linux 질문 제목을 사용하십시오. 로컬 네트워크에 연결된 다른 머신을 찾는 방법 .

0
Josir