2011-08-26 20 views
42

Sono in grado di inviare comandi alle istanze EC2 tramite SSH e questi comandi registrano le risposte che dovrei continuare a guardare per un lungo periodo di tempo. La cosa brutta è che il comando SSH è chiuso dopo un po 'di tempo a causa della mia inattività e non riesco più a vedere cosa succede alle mie istanze.Amazon EC2 timeout ssh inattività

Come disattivare/aumentare il timeout nelle macchine Amazon Linux?

L'errore si presenta così:

Read from remote host ec2-50-17-48-222.compute-1.amazonaws.com: Connection reset by peer

risposta

9

Considerare l'utilizzo di screen o byobu e il problema probabilmente scomparirà. Inoltre, anche in caso di perdita della connessione, è possibile riconnettersi e ripristinare l'accesso alla stessa schermata del terminale che si aveva in precedenza, tramite screen -r o byobu -r.

byobu è un miglioramento per lo schermo e ha un meraviglioso set di opzioni, come una stima dei costi EC2.

+0

Esiste un buon tutorial per entrambi? Né sembra venire preinstallato sugli host EC2, e da quello che ho letto si suppone di eseguirli sul server. –

+2

Preferisco @ ServerAliveInterval di brandnewcode, di seguito. Ho usato tmux, che è simile allo schermo. Un vantaggio non previsto di tmux è un orologio sulla barra di stato che si aggiorna ogni minuto, mantenendo la connessione aperta. tl; dr: 'tmux' per iniziare una sessione, e' tmux a' per riattaccare. – dannyman

+5

Questo non dovrebbe essere contrassegnato come la risposta corretta poiché risponde a una domanda diversa. –

-6

Ho un 10+ AMI personalizzati tutti basati su AMI Amazon Linux e non ho mai incontrato problemi di timeout dovuti all'inattività su una connessione SSH. Ho avuto le connessioni rimangono aperte più di 24 ore, senza eseguire un singolo comando. Non penso ci siano timeout integrati nelle AMI Amazon Linux.

+0

sai perché sto ottenendo questo errore? – Roberto

+0

Penso sia sufficiente dire che un numero maggiore di persone sta scadendo il tempo e una ragione possibile per cui non si sta scadendo è perché si dispone di un'impostazione client per il proprio ssh che esegue occasionalmente il ping remoto per mantenere la disconnessione/ripristinato il verificarsi delle connessioni. – Jim

26

Supponendo che l'istanza Amazon EC2 è in esecuzione Linux (e il caso molto probabile che si sta utilizzando SSH-2, non 1), il seguente dovrebbe funzionare abbastanza comoda:

  1. remoto nella vostra istanza EC2.

    ssh -i <YOUR_PRIVATE_KEY_FILE>.pem <INTERNET_ADDRESS_OF_YOUR_INSTANCE> 
    
  2. aggiungere una direttiva "client-alive" per file di configurazione del server SSH-dell'istanza.

    echo 'ClientAliveInterval 60' | sudo tee --append /etc/ssh/sshd_config 
    
  3. Riavviare o ricaricare il server SSH, per poter riconoscere la modifica della configurazione.

    • Il comando per che in Ubuntu Linux sarebbe ..

      sudo service ssh restart 
      
    • D'qualsiasi altro Linux, però, ciò che segue è probabilmente corretta ..

      sudo service sshd restart 
      
  4. Di SCollegare.

    logout 
    

La prossima volta che SSH nel tale istanza EC2, i super-fastidiosi blocca collegamento frequente/timeout/gocce dovrebbe teoricamente essere andato.

Questo è utile anche per le istanze di Google Compute Engine, che sono dotate di impostazioni predefinite altrettanto fastidiose.

Attenzione: notano che TCPKeepAlive impostazioni (che esistono anche) sono sottilmente, ma nettamente diverso dalle ClientAlive impostazioni che vi propongo qui sopra, e che la modifica delle impostazioni TCPKeepAlive da quella di default possono effettivamente danneggiare il vostro situazione piuttosto che aiuto.

Maggiori informazioni qui: http://man.openbsd.org/?query=sshd_config

+2

che dovrebbe essere 'sudo service sshd restart' presumo? – CupawnTae

+1

@CupawnTae Ahh, probabilmente hai ragione: l'OP dice Amazon Linux nella sua domanda. In effetti, dovremmo interpretarlo come riferimento all'AMI Amazon Linux basato su Red Hat Enterprise Linux, in cui l'ortografia sarebbe corretta. – naki

+0

@CupawnTae ... Io uso Ubuntu sulle mie istanze Amazon EC2 Linux. Se si sta usando Ubuntu, dovrebbero scriverlo nel modo in cui l'ho scritto. – naki

76

è possibile impostare un mantenere un'opzione vivo nel vostro/file di configurazione ~ .ssh/a casa dir del computer:

ServerAliveInterval 50 

Amazon AWS di solito cade la connessione a dopo solo 60 secondi di inattività, quindi questa opzione eseguirà il ping del server ogni 50 secondi e ti manterrà connesso all'infinito.

+2

questa impostazione è sul lato client, al contrario del server AWS, giusto? Sarebbe degno di menzione nella risposta. Inoltre, sei sicuro dei 60 secondi? Certamente ci vuole molto più tempo di quello per cui le mie connessioni scadono. – CupawnTae

+1

Sì, è sul lato client, sulla tua ssh config sul tuo computer * nix. Aggiornerò la risposta, grazie! Per me sono in realtà 120 secondi, ma ho un collega che lavora in un'altra regione e si spegne in 60 secondi per lui. Non chiedermi perché, non lavoro su Amazon! Ecco perché ho detto "di solito" 60 secondi. Ho pensato che fosse prudente raccomandare 50 secondi perché 1. funzionerà per quasi tutti e 2. Non ha intenzione di battere la tua connessione di rete, è solo un ping. Potresti mettere 10 secondi e sarà comunque abbastanza leggero da non cadere in una sorta di divieto del server. – mauriciomdea

+0

Grazie mille. Era doloroso ricollegarsi tutto il tempo subito dopo 1 minuto di inattività. Mi ha aiutato. –