Este tutorial le ofrece una muy buena solución si utiliza conexiones SSH y encuentra el error: Tiempo de espera de conexión SSH agotado/tubería rota. Error mal dicho. Es un mensaje que anuncia que se cerró la conexión entre su computadora y el servidor al que estaba conectado. Putty o Terminal.
Tanto como usuario de Windows como de Mac (en los últimos 10 años) pasé mucho tiempo en Conexiones SSH a servidores web, servidores de correo electrónico, nube y otros sistemas de respaldo. La distribución preferida de Linux es sin duda CentOS.
Una de las cosas más estresantes para los administradores de servidores es para interrumpir las conexiones SSH. Ya sea de repente mientras se abotona Putty o Terminal (la mayoría de las veces es un problema de conexión local), o después de un tiempo “idle” – perioada de timp in care nu interactioneaza cu serverul la distanta prin sesiunea SSH.
Daca sunteti utilizator de Mac si folositi utiliarul Terminal pentru conexiunea la distanta prin SSH, atunci cu siguranta dupa in timp de inactivitate ati fost deconectat cu mesajul:“client_loop: send disconnect: Broken pipe”. Rezolvarea am dat-o in articolul de aici, in care am spus ca se poate adauga in “/etc/ssh/ssh_config” linia:
Host *
ServerAliveInterval 120
Solutia de mai sus este valabila pentru utilizatorii de Mac, iar sincer sa fiu cele mai recente actualizari ale macOS nu retin dupa restart modificarile facute in fisierul “ssh_config“, iar problema cu deconectarea unei sesiuni in idle revine.
O solutie prin care putem preveni deconectarea unei sesiuni SSH la distanta stabilita prin Terminal (macOS) sau Putty (Windows), este ca pe langa “ServerAliveInterval” de pe calculatorul nostru, sa determinam si serverul de la distanta sa comunice periodic cu aplicatia / clientul SSH.
Pentru asta trebuie sa punem directiva “ClientAliveInterval” en “sshd_config” pe serverul la care ne conectam.
Prevent SSH Connection Timing Out / Broken Pipe (ssh_config Consejos)
1. Ne conectam la serverul pe care dorim sa activam si sa stabilim un interval de timp pentru “ClientAliveInternal“. Deschidem SSH en Putty, Terminal sau alt utilitar asemanator si ne autentificam cu user root.
ssh [email protected]
2. Executam linia de comanda pentru a cauta in fisierul “sshd_config” daca “ClientAliveInterval” este activ si care este perioada de timp setata.
sudo grep "ClientAliveInterval" /etc/ssh/sshd_config
In scenariul nostru “ClientAliveInterval” este dezactivat si valoare intervalului de timp este zero.
[root@buffy ~]# sudo grep "ClientAliveInterval" /etc/ssh/sshd_config
#ClientAliveInterval 0
[root@buffy ~]#
Semnul hashtag “#” pus in fata unei linii, o anuleaza. Este inctiva.
3. Deschidem cu editor “nano” o “vim” ARCHIVO “sshd_config“. Eu prefer “nano“.
sudo nano /etc/ssh/sshd_config
4. Stergem “#” din fata liniei “ClientAliveInterval” si setam un numar de secunde: 60, 120 …
ClientAliveInterval 120
ClientAliveCountMax 10
5. Salvam modificarile si restartam serviciul “sshd“.
sudo systemctl restart sshd
ClientAliveInterval : Este intervalul de timp in secunde la care serverul ca trimite un pachet de date null catre client / aplicatia prin care suntem conectati la server. Aceasta practica va tine conexiunea in viata / activa.
ClientAliveCountMax : Clientii SSH care nu raspund in 10 cicluri de 120 de secunde (setate de “ClientAliveInterval“) se va intrerupe conexiunea. Adica dupa 20 de minute in care clientul SSH nu a raspuns pachetelor nule trimise de server.
Cu aceste modificari conexiunea SSH va fi mai stabila si ramane la fel de sigura.