GNU/Linux >> Linux Esercitazione >  >> Linux

Montaggio SSHFS che sopravvive alla disconnessione

Soluzione 1:

Usa -o reconnect,ServerAliveInterval=15,ServerAliveCountMax=3

La combinazione ServerAliveInterval=15,ServerAliveCountMax=3 fa apparire gli errori I/O dopo un minuto di interruzione della rete. Questo è importante ma in gran parte non documentato. Se ServerAliveInterval l'opzione è lasciata al valore predefinito (quindi senza il controllo vivo), i processi che sperimentano il blocco dell'I/O sembrano dormire indefinitamente, anche dopo che sshfs ottiene reconnect 'ed. Lo considero un comportamento inutile.

In altre parole cosa succede su -o reconnect senza assegnare ServerAliveInterval è che qualsiasi I/O avrà successo o bloccherà l'applicazione a tempo indeterminato se ssh si riconnette al di sotto. Di conseguenza, un'applicazione tipica diventa completamente bloccata. Se desideri consentire a I/O di restituire un errore e riprendere l'applicazione, hai bisogno di ServerAliveInterval=1 o superiore.

Il ServerAliveCountMax=3 è comunque il valore predefinito, ma mi piace specificarlo per leggibilità.

Soluzione 2:

Grazie per i consigli di autossh e autofs.

Tuttavia, per il mio scopo diretto ho trovato una soluzione molto più semplice che non è stata documentata così bene:

sshfs -o reconnect server:/path/to/mount

Soluzione 3:

Autossh riconnette automaticamente le sessioni ssh quando rileva che ssh è morto o ha smesso di trasmettere traffico. Dal momento che è solo ssh automatizzato, funzionerà da diversi IP e dalla sospensione (anche se il laptop si riattiva su una LAN diversa).

Soluzione 4:

Una cosa che potresti fare è montare i tuoi filesystem tramite autofs. Autofs è uno strumento che monterà un filesystem quando si utilizza qualcosa nella directory in cui verrà montato il filesystem. Quando rileva attività, il filesystem viene montato. Quando non accade nulla sul filesystem, viene smontato.

Ecco un howto che ho trovato su google per ottenere questo risultato, ce ne sono molti altri.

Soluzione 5:

Sospetto che non ci sia, perché anche se puoi configurare il tuo client SSH per non interrompere la connessione, il server potrebbe essere configurato per farlo dopo un determinato periodo di inattività e non saresti in grado di ignorarlo. Anche se potessi, se non riprendessi mai la connessione, il server rimarrebbe sospeso e nel tempo ciò potrebbe portare a un notevole spreco di risorse del server.

Una tecnica migliore, penso, è smontare il filesystem prima di sospendere il computer e rimontarlo quando il computer si riattiva. Il meccanismo per farlo può dipendere esattamente da come sospendi il tuo computer:io uso il kernel tuxonice e per fare qualcosa del genere ho una direttiva come

Unmount /mnt/sshfs

in /etc/hibernate/common.conf .


Linux
  1. SSHFS? Cos'è e come lo uso?

  2. SSHFS (Secure SHell FileSystem) – Monta in modo sicuro il filesystem remoto su ssh

  3. Alternativa alla riga di comando SSH da Ubuntu

  4. Monta con sshfs e scrivi i permessi dei file

  5. Inoltra SSH attraverso il tunnel SSH

SSHFS:come montare file system remoti su SSH

Come utilizzare SSHFS per montare directory remote su SSH

SSHFS:montaggio di un file system remoto su SSH

Monta una cartella remota con sshfs

Ssh:limitare un utente Ssh/scp/sftp a una directory?

Come utilizzare il montaggio SSHFS con directory remote su SSH