SSH, sigla para Secure Shell, é um protocolo de rede remota usado para se conectar de forma segura a dispositivos remotos, como servidores e dispositivos de rede, por meio de uma rede TCP/IP.
É um protocolo de rede criptográfico que fornece tecnologias de criptografia forte e hashing para garantir a comunicação entre dois dispositivos em uma rede.
O SSH usa dois métodos principais de autenticação: autenticação por senha e autenticação de chave pública. Com a autenticação por senha, um usuário fornece o endereço IP do host remoto ou o FQDN (Fully Qualified Domain Name) e a senha para autenticação.
A autenticação por chave pública usa um par de chaves SSH para autenticação, que compreende duas chaves SSH: chaves privadas e públicas.
A chave privada reside no computador do usuário e deve sempre ser mantida confidencial e segura. A chave pública é salva no host remoto ao qual um usuário se conecta. Durante a autenticação, a identidade das duas chaves é comparada e o acesso é concedido.
Ao conectar-se a um sistema remoto via SSH, você pode encontrar o erro Client_loop: send disconnect: Broken pipe.
Neste tutorial, veremos por que isso acontece e como corrigir o erro.
O erro é simplesmente uma mensagem de desconexão que notifica que o tempo limite de sua conexão SSH expirou.
Este é um período de inatividade durante o qual nenhum comando Linux é executado ou emitido pelo lado do cliente. Quando isso acontece, a sessão SSH é encerrada, desconectando você do servidor remoto.
A maioria dos usuários geralmente pressiona 'ENTER' ou uma tecla no teclado para evitar ter uma sessão SSH ociosa, o que causará a desconexão para o host. No entanto, isso pode ser tedioso e demorado.
Felizmente, as configurações padrão do SSH fornecem alguns parâmetros que você pode configurar para manter suas conexões SSH ativas por períodos mais longos.
Para resolver esse problema, você precisa aumentar o tempo limite da conexão SSH no cliente. Para fazer isso, modifique o arquivo de configuração padrão do SSH, que geralmente está em /etc/ssh/sshd_config.
$ sudo nano /etc/ssh/sshd_config
Certifique-se de localizar esses dois parâmetros: ClientAliveInterval e ClientAliveCountMax. Vamos ver o que eles fazem.
Vamos definir os dois valores da seguinte forma:
ClientAliveInterval 300
ClientAliveCountMax 3
Isso significa que após os primeiros 300 segundos (5 minutos) de inatividade do cliente, o servidor enviará uma mensagem de alive para o cliente para manter a sessão SSH ativa.
Se nenhum dado ou resposta for recebida do cliente pelos próximos 300 segundos (no marco de 600 segundos), o servidor enviará outra mensagem de alive. Finalmente, após 900 segundos de inatividade do cliente, a conexão SSH será terminada ou desconectada.
Certifique-se de salvar as alterações feitas no arquivo e, em seguida, sair. Em seguida, reinicie o daemon SSH.
$ sudo systemctl restart sshd
Alternativamente, você pode se conectar ao seu sistema Linux cliente remoto especificando o parâmetro ServerAliveInterval em segundos (300 segundos), o que significa que sua sessão SSH está ativa por até 5 minutos.
$ ssh -o ServerAliveInterval=300 username@server_ip_address
Neste tutorial, demonstramos como resolver o erro Client_loop: send disconnect: Broken pipe. Como você viu, tudo o que você precisa fazer é fazer algumas alterações no arquivo de configuração do SSH.
Pergunta e respostas frequentes sobre o conteúdo.
SSH, sigla para Secure Shell, é um protocolo de rede remota usado para se conectar de forma segura a dispositivos remotos, como servidores e dispositivos de rede, por meio de uma rede TCP/IP.
O SSH usa dois métodos principais de autenticação: autenticação por senha e autenticação de chave pública.
Com a autenticação por senha, um usuário fornece o endereço IP do host remoto ou o FQDN (Fully Qualified Domain Name) e a senha para autenticação.
A autenticação de chave pública usa um par de chaves SSH para autenticação, que compreende duas chaves SSH: chaves privadas e públicas.
O erro ocorre quando o tempo limite da conexão SSH é excedido, geralmente devido a inatividade durante a qual nenhum comando Linux é executado ou emitido pelo lado do cliente.
Para corrigir o erro, é necessário aumentar o tempo limite da conexão SSH no cliente, modificando o arquivo de configuração padrão do SSH.
ClientAliveInterval é o período de inatividade após o qual o servidor SSH envia uma mensagem de alive para o cliente remoto conectado a ele.
ClientAliveCountMax é o número de tentativas que o servidor SSH fará para enviar a mensagem de alive do servidor para o cliente.
É possível definir os valores do ClientAliveInterval e do ClientAliveCountMax no arquivo de configuração padrão do SSH, geralmente localizado em /etc/ssh/sshd_config.
Para reiniciar o daemon SSH após fazer as alterações no arquivo de configuração, você pode usar o comando sudo systemctl restart sshd.
Uma sessão SSH ociosa é um período de inatividade durante o qual nenhum comando Linux é executado ou emitido pelo lado do cliente, o que pode resultar em desconexão do servidor remoto.
Para evitar uma sessão SSH ociosa, os usuários podem pressionar 'ENTER' ou uma tecla no teclado para manter a sessão ativa.
Os parâmetros ClientAliveInterval e ClientAliveCountMax podem ser configurados para manter as conexões SSH ativas por mais tempo.
ServerAliveInterval é um parâmetro que pode ser especificado ao se conectar a um sistema Linux remoto para manter a sessão SSH ativa por até um determinado período de tempo.
Para se conectar a um sistema Linux remoto especificando o ServerAliveInterval, você pode usar o comando ssh -o ServerAliveInterval=300 username@server_ip_address.
Especialista linux, desenvolvedor web full-stack, PHP no sangue, graduando em Direito, pai da Lais e esposo da Simone