É 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 reiniciar o seu sshd)
echo "ClientAliveInterval 60" | sudo tee -a /etc/ssh/sshd_config
Não existe ~/.ssh/configno meu Mac, tenho que criá-lo lá ou está em outro lugar?
AGamePlayer
5
@AwQiruiGuo Sim, você deve criar o diretório ( ~/.ssh) primeiro. Entãomkdir -p ~/.ssh; chmod 700 ~/.ssh; touch ~/.ssh/config
Gert
6
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 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 digitadas não chegarem ao servidor e tentar continuamente restabelecer a conexão.
A instalação e a configuração são simples: agora estão incluídas em todas as distribuições atuais do Linux (mais algumas não-Linux) e coordenam a inicialização e a autenticação da sessão por meio de uma conexão ssh anterior. Portanto, se você é capaz de se conectar via ssh user@servervocê provavelmente será capaz de se conectar ao mosh apenas ligando mosh user@server, 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ê não terá mais sorte se não puder fazer furos nele mesmo ( implicações de segurança ).
Se você deseja ter um período de conexão mais longo, no cliente, adicione:
echo 'ServerAliveInterval 30' | sudo tee -a ~/.ssh/config
echo 'ServerAliveCountMax 1200' | sudo tee -a ~/.ssh/config
ServerAliveCountMaxpor padrão, isso é definido como 3. Portanto, assim ServerAliveIntervalque enviar 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).
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 arpcomando
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
~/.ssh/config
no meu Mac, tenho que criá-lo lá ou está em outro lugar?~/.ssh
) primeiro. Entãomkdir -p ~/.ssh; chmod 700 ~/.ssh; touch ~/.ssh/config
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 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 digitadas não chegarem ao servidor e tentar continuamente restabelecer a conexão.A instalação e a configuração são simples: agora estão incluídas em todas as distribuições atuais do Linux (mais algumas não-Linux) e coordenam a inicialização e a autenticação da sessão por meio de uma conexão ssh anterior. Portanto, se você é capaz de se conectar via
ssh user@server
você provavelmente será capaz de se conectar ao mosh apenas ligandomosh user@server
, 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ê não terá mais sorte se não puder fazer furos nele mesmo ( implicações de segurança ).
fonte
Se você deseja ter um período de conexão mais longo, no cliente, adicione:
ServerAliveCountMax
por padrão, isso é definido como 3. Portanto, assimServerAliveInterval
que enviar 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).fonte
Isso geralmente significa que sua conexão de rede (TCP) foi redefinida. Por exemplo, seu provedor de Internet reconectou você ou algo assim.
fonte
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
arp
comandoEstou 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
Você notará dois conjuntos de endereços MAC usando o mesmo endereço IP. Evite conflitos, definindo um para outro endereço IP.
fonte
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:
Para descobrir quais máquinas estão na sua rede, você pode usar o título da pergunta Unix e Linux: Como descobrir quais outras máquinas estão conectadas à rede local .
fonte