ti-enxame.com

O que a mensagem de canal quebrado significa em uma sessão SSH?

Às vezes, minha sessão SSH se desconecta com um Write failed: Broken pipe mensagem. O que isso significa? E como posso manter minha sessão aberta?

Eu sei sobre screen, mas essa não é a resposta que estou procurando. Eu acho que essa é uma opção de configuração sshd.

107
Peter Stuifzand

É possível que o servidor feche as conexões inativas por muito tempo. Você pode atualizar seu cliente (ServerAliveInterval) ou seu servidor (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.

Para atualizar seu servidor (e reinicie seu sshd)

echo "ClientAliveInterval 60" | Sudo tee -a /etc/ssh/sshd_config

Ou do lado do cliente:

echo "ServerAliveInterval 60" >> ~/.ssh/config 
92
Gert

Uma solução alternativa seria usar mosh - o Shell móvel . Ao contrário do ssh, ele se conecta via UDP e suporta roaming. Você pode iniciar sua sessão em casa, suspender seu laptop, levá-lo ao trabalho/amigos/onde quer que você tenha Internet, desconectar o laptop e continuar trabalhando como se nada tivesse acontecido. É especialmente útil se você estiver com uma péssima conexão com a Internet: mostra feedback instantâneo se as teclas não chegarem ao servidor e tentar continuamente restabelecer a conexão.

A instalação e a configuração são simples: agora está incluído em todas as distribuições atuais do Linux (mais algumas não-Linux) e coordena a inicialização e a autenticação da sessão por meio de uma conexão ssh anterior. Portanto, se você conseguir se conectar via ssh [email protected] é muito provável que você consiga se conectar ao mosh ligando para mosh [email protected], se os pacotes mosh estiverem instalados nas duas extremidades.

O principal motivo para falhas de conexão é que você precisa acessar o servidor em uma porta UDP (intervalo padrão: 60000-61000) para que o mosh funcione. Portanto, se o servidor estiver protegido por um firewall, você estará quase sem sorte se não puder fazer furos nele mesmo ( implicações de segurança ).

6
Perseids

Se você deseja ter um período de conexão mais longo, no cliente, adicione:

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

ServerAliveCountMax por padrão, isso é definido como 3. Portanto, uma vez que o ServerAliveInterval envie 3 pacotes pequenos de informações para o servidor, ele será desconectado automaticamente. Configurá-lo para 1200 significa que esse processo terá que ocorrer pelo menos 1200 vezes. Em resumo, você deve estar conectado pelo menos 30 * 1200 segundos (10 horas).

5
Francisco Costa

Isso geralmente significa que sua conexão de rede (TCP) foi redefinida. Por exemplo. seu provedor de internet reconectou você ou algo assim.

2
maxschlepzig

Eu tive o mesmo problema, mas não é o esperado. Se você achar que na mesma rede outro servidor está tentando o mesmo endereço IP, você enfrentará o mesmo problema. Para resolver isso, você precisa verificar se existem outros servidores que usam o mesmo endereço IP. Isso pode ser feito usando o comando arp.

Estou usando o Debian, então aqui está uma amostra dos comandos que eu uso para determinar se outro servidor estava realmente usando o mesmo endereço 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)

Você notará dois conjuntos de endereços MAC usando o mesmo endereço IP. Evite conflitos, definindo um para outro endereço IP.

1
Bill Ang

Outra causa para a "mensagem Broken Pipe" é que outra máquina está tentando usar o mesmo IP do seu host.

Uma maneira simples de testar se outra pessoa está usando esse IP:

  1. Desligue seu host
  2. faça ping no mesmo IP para ver se outra máquina está usando esse IP

Para descobrir quais máquinas estão na sua rede, você pode usar este título de pergunta para Unix e Linux: Como descobrir quais outras máquinas estão conectadas à rede local .

0
Josir