GNU/Linux >> Linux Esercitazione >  >> Linux

Correzione dell'errore del tubo rotto con la connessione SSH

Se utilizzi SSH per connetterti a server Linux remoti, noterai che se mantieni la tua sessione SSH inattiva per un po' di tempo e poi provi a usarla di nuovo, la sessione SSH si disconnette con un messaggio di errore come questo:

:client_loop: send disconnect: Broken pipe

Su alcuni sistemi, visualizzerà "Scrittura non riuscita:pipe rotta" o "Connessione chiusa da host remoto".

Vediamo cosa causa questo errore e come mantenere attiva la tua connessione SSH.

Risolto errore di pipe rotta con SSH

Come avrai intuito, la connessione SSH è chiusa per inattività. Non esiste un valore impostato, ma di solito è di circa 5 minuti.

Quello che puoi fare per evitare la disconnessione della sessione SSH è inviare un "messaggio attivo" dal server al client (ClientAliveInterval ) o da client a server (ServerAliveInterval ) a un determinato intervallo di tempo.

In questo modo, mantieni attiva la sessione SSH perché c'è una comunicazione tra il client e il server e il server capisce che il client è ancora lì.

Ora, ci sono due modi per farlo. O invii il messaggio vivo dal client al server o dal server al client.

  • Se ti connetti a più server tramite SSH, impostalo sul tuo computer.
  • Se sei un amministratore di sistema e molti utenti si lamentano della frequente disconnessione della connessione SSH, puoi impostarla sul server.

Metodo 1:modifica della configurazione SSH lato client

Supponiamo che tu voglia mantenere attiva la tua connessione SSH con un massimo di 10 minuti (600 secondi) di inattività.

Durante la connessione al sistema Linux remoto tramite SSH, puoi menzionare il ServerAliveInterval valore come questo:

ssh -o ServerAliveInterval=600 [email protected]_ip_address

Ora, questa cosa funziona ma inserire manualmente questa opzione ogni volta che ti connetti al server è noioso. Perché non renderlo permanente?

Spero che tu sia a conoscenza dei file di configurazione SSH. Sul lato client, puoi sfruttarlo per impostare determinati parametri SSH per connessioni specifiche o per tutte. Ho spiegato in dettaglio il file di configurazione SSH qui.

Innanzitutto, assicurati di avere il file di configurazione ssh. In caso contrario crealo:

touch ~/.ssh/config

È importante dargli i permessi di file corretti altrimenti ti verrà negato l'errore di autorizzazione durante la connessione tramite SSH.

Usa il comando chmod e aggiungi la seguente autorizzazione al file:

chmod 600 ~/.ssh/config

Se ti senti pigro o non vuoi entrare nei dettagli, usa questo comando per impostare l'intervallo di vita su 600 secondi (10 minuti):

echo "ServerAliveInterval 600" >> ~/.ssh/config 

Questo imposterà il valore ServerAliveInterval su 10 minuti per tutte le connessioni SSH che utilizzerai. Provalo se vuoi.

Se vuoi renderlo più appropriato, dovresti aggiungerlo in questo modo:

Host *
ServerAliveInterval 600

Metodo 2:modifica della configurazione SSH lato server

Il file di configurazione SSH per il server si trova solitamente in /etc/ssh/sshd_config.

Se apri questo file, qui troverai due parametri di interesse:

  • ClientAliveInterval : Questo è il periodo di inattività dopo il quale il server invierà un messaggio vivo al client connesso ssh.
  • ClientAliveCountMax :Questo è il numero di tentativi che il server farà per inviare il messaggio attivo.

Supponiamo di impostare ClientAliveInterval a 200 secondi e ClientAliveCountMax a 3. Ciò significa che il server invierà un messaggio attivo dopo 200 secondi. Se non c'è attività dal client, invierà nuovamente un messaggio attivo a 400 secondi. Nessuna risposta/attività dal client e un altro messaggio attivo viene inviato a 600 secondi. Dopo questo (600 secondi) la connessione SSH viene disconnessa.

Puoi modificare il /etc/ssh/sshd_config file nel tuo editor di testo basato su terminale preferito come Vim. Cerca le voci ClientAliveInterval e ClientAliveCountMax. Rimuovi il tasto # all'inizio delle righe e assegna loro il valore appropriato.

Salva ed esci dal file.

Si prega di non impostare il timeout della connessione SSH su diverse ore. Sarebbe uno spreco di risorse.

Spero che questo tutorial ti abbia aiutato a risolvere il problema di errore del tubo rotto con la connessione SSH. Il tuo feedback è il benvenuto.


Linux
  1. WebLogic non si avvia con l'errore "nessun router disponibile verso la destinazione".

  2. Come aumentare il timeout della connessione SSH

  3. Perché Rsync non riesce con tubo rotto (32), errore nella presa Io (codice 10) su Io.c(820)??

  4. Come proteggere il servizio SSH con Port Knocking

  5. Risolvi i problemi di SSH

Come gestire in remoto un server Linux con SSH

Correzione di HTTP Basic:accesso negato e errore di autenticazione irreversibile con GitLab

Come bloccare il tuo server CentOS con IPtables

Genera chiavi RSA con SSH usando PuTTYgen

Accedi a un server Linux con una chiave privata SSH su un client Windows

Come proteggere SSH con Fail2Ban