Come posso ssh su connessioni lente / instabili?


20

Ho a che fare con una connessione shell molto lenta. È nel cloud e sono molto lontano dal server. La mia connessione a volte si interrompe anche perché è su Internet e potrei anche usare Wifi condiviso o 3G. C'è un modo per vedere cosa digito all'istante? Cercare di digitare comandi e attendere ogni personaggio è atroce.


4
Usa "schermo" per mantenere viva la sessione, in modo da poter riconnetterti quando ti disconnetti.
Konerak,

Risposte:


24

Prova Mosh .

Mosh (mobile shell)
Applicazione terminale remota che consente il roaming, supporta la connettività intermittente e fornisce l'eco locale intelligente e la modifica della linea delle sequenze di tasti dell'utente.

Mosh è un sostituto di SSH. È più robusto e reattivo, soprattutto tramite collegamenti Wi-Fi, cellulari e interurbani.

Mosh è un software gratuito, disponibile per GNU / Linux, FreeBSD, Solaris, Mac OS X e Android.


3
Avvertenze per mosh: (1) è molto più intenso della CPU rispetto a ssh. (2) Se la tua sessione mosh non termina normalmente, avrai una connessione trapelata che non potrà mai essere ristabilita. (Devo ospitare la mia shell box altrimenti ci saranno dozzine di processi in esecuzione).
user606723

Un altro problema è che è quasi impossibile installare su Linux distro come Suse (SLES). Ho passato ore a cercare di installarlo come pacchetto openSuse o di compilarlo dal sorgente.
Zombi il

$ sudo zypper in mosh (secondo i documenti)
dmourati

Sì, funzionerà bene su openSuse, ma in una distribuzione aziendale / chiusa è molto difficile installare nuovi progetti open source.
Zombi il

10

un'alternativa (e anche in aggiunta) alla risposta dmourati: uso screeno tmuxo altro, per mantenere in vita le sessioni quando si è disconnessi. (Ti riconnetti semplicemente alla sessione dopo esserti riconnesso e vedi il terminale come lo hai lasciato, anche con programmi a schermo intero [vi, ecc]). Ha anche molti altri vantaggi (condivisione di sessioni con i colleghi, ecc.) (Come nella stessa FAQ di Mosh afferma:

D: Perché il buffer di scrollback del mio terminale è incompleto?

Mosh 1.2 sincronizza solo lo stato visibile del terminale. Mosh 1.3 avrà il supporto completo per lo scrollback; vedere questo problema e gli altri che sono collegati da lì. Per ora, la soluzione alternativa consiste nell'utilizzare screen o tmux sul lato remoto.

E dovresti anche usare rsyncper copiare i file, senza dover inviare nuovamente parti già inviate sulla rete quando la connessione si interrompe.


2

Dovresti vedere dove sono la latenza / i colli di bottiglia. Dovresti cercare di ottenere un migliore accesso all'infrastruttura ... localmente o dal lato del provider. Avvolgi le tue sessioni importanti o critiche tmuxo screenmultiplexer ...

Per favore, dacci dei numeri. Ci vuole una connessione particolarmente negativa per le semplici sessioni SSH per avere problemi ... Ho dovuto accedere ai sistemi dall'altra parte del mondo da un aereo su una VPN e non ho ancora avuto troppi problemi. È un problema persistente? Che cosa tracerouteti dice?


Il problema si verifica molto sul wifi dell'hotel, dove ci sono troppi router e troppi dispositivi / laptop che condividono l'accesso a Internet. Anche il wifi condiviso dell'hotel è intrinsecamente piuttosto scadente con i tempi di ping poiché attraversare 1 o più muri aggiunge davvero un sacco di ritardo ms. Questo è anche un altro grande collo di bottiglia. Una situazione simile si verifica su 3G, dove una tale distanza dalla torre del telefono cellulare aggiunge MS. Quando uso le shell SSH, devo aspettare ogni personaggio. Un MS di 200-400 può essere piuttosto fastidioso, ma con picchi fino a 1 secondo ... ahi.
Zombi il

1

Per i futuri lettori di questo thread, il suggerimento di @lowellheddings nel suo blog , insieme all'uso dello schermo , potrebbe aiutare a superare questo problema:

È possibile configurare il client ssh per inviare automaticamente un codice di codice no-op di protocollo ogni numero di secondi in modo che il server non si disconnetta. Questa impostazione viene talvolta definita Keep-Alive o Stop-Disconnecting-So-Much in altri client.
Aggiungi la seguente riga al file / etc / ssh / ssh_config:
ServerAliveInterval 60
...

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.