sshfs non si monta automaticamente all'avvio, nonostante la configurazione / etc / fstab


24

Configurando alcune workstation Ubuntu (13.04), sto cercando di montare un filesystem remoto (su SSH).

L'attuale configurazione

  • Ho creato un utente utente e l' ho aggiunto al gruppo di fusibili

  • La mia voce fstab recita come:

    sshfs#someuser@remote.com:/remote_dir  /media/remote_dir/   fuse    auto,_netdev,port=22,user,allow_other,noatime,follow_symlinks,IdentityFile=/home/someuser/.ssh/id_rsa,reconnect     0       0
    

dalla mia comprensione:

  • auto : chiede esplicitamente che il fs remoto venga montato all'avvio
  • _netdev : attendi che l'interfaccia sia attiva prima di provare a montare
  • utente : consente a qualsiasi utente di richiedere il montaggio di questa posizione remota specifica (inutile nella prospettiva dell'utente root che lo monta automaticamente all'avvio)
  • allow_other : consentirà a qualsiasi utente (nel gruppo dei fusibili?) di accedere agli FS montati
  • IdentityFile : punta alla chiave privata accoppiata con la chiave pubblica aggiunta in /home/someuser/.ssh/authorized_key della macchina remota.
  • riconnetti : non sono sicuro ... Tenterà di riconnettersi se si perde la connessione?

Il problema

  • All'avvio, accedo con un utente , accendo un terminale e / media / remote_dir è vuoto.

  • Ma dallo stesso utente (o root), posso montarlo semplicemente digitando:

    mount sshfs#someuser@remote.com:/remote_dir
    

    Viene anche montato magicamente automaticamente se faccio clic su remote_dir in un browser di file.

Qualche idea su cosa potrebbe mancare?


Lo hai mai capito? Sto riscontrando lo stesso problema su una macchina Ubuntu 14.04 a 64 bit.
glibdud,

Vedendo la popolarità di questa domanda, rispetto al numero di risposte, ho rinunciato all'approccio fstab. Ho deciso di mordere il proiettile e imparare come utilizzare Automount, affrontando il problema del quadro generale. Dalla mia esperienza è stata "la scelta giusta". Una buona introduzione ad Automount può essere trovata sul wiki di Ubuntu .
Annuncio N

Risposte:


18

Ho riscontrato lo stesso identico problema dopo l'aggiornamento da Oneiric (dove l'automount ha funzionato correttamente) a Precise.

Ciò che ha risolto il problema per me è stato l'aggiunta dell'opzione delay_connect . Inoltre, ho già usato l'opzione "workaround = rename" già da tempi onirici. Non sono sicuro se sia ancora necessario oggi, ma almeno non sembra ferire.

La mia linea completa / etc / fstab è:

sshfs#user@host:/remote/dir /local/dir fuse delay_connect,idmap=user,uid=1000,gid=1000,umask=0,allow_other,_netdev,workaround=rename 0 0

Ovviamente dovresti adattare gli ID utente / gruppo al tuo ambiente.


1
Ha funzionato per me senza soluzione alternativa = rinomina dove prima non funzionava. Quindi la mia unica modifica è stata l'aggiunta dell'opzione delay_connect, che sicuramente ha aiutato qui! Grazie per questo. Mi chiedo solo perché _netdev non è abbastanza qui ...
Nicolas

1
Funziona perfettamente anche per me. @Nicolas, credo che il _netdevproblema sia spiegato nella risposta di Tony. La rete potrebbe essere attiva, ma non è ancora possibile risolvere l'host. Ovviamente, l'uso di un indirizzo IP lo risolverebbe, ma chi vuole gli indirizzi IP nel loro fstab?
Auspex,

Per quello che vale, in qualche modo quando lo copio incollato in atomo, ha raccolto personaggi invisibili che lo hanno rotto. Ho dovuto rimuovere quelli
Jonathan

4
Si monta bene ma poi ottengo: ls / backup: errore di input / output
Jonathan

L'aggiunta di 'delay_connect, workaround = rename' ha funzionato per me su Arch Linux. Grazie!
aSystemOverload

1

Anche per integrare tutti i commenti precedenti,

  1. Assicurati di consentire agli utenti non root di specificare l' allow_otheropzione di montaggio in/etc/fuse.conf

  2. Assicurati di usare ogni mount sshfs almeno una volta manualmente mentre root in modo che la firma dell'host venga aggiunta al ~/.ssh/known_hostsfile.

    sshfs [user]@[host]:[remote_path] [local_path] -o allow_other,IdentityFile=[path_to_id_rsa]
    

L'opzione mount di allow_other espone un bug di sicurezza irrisolto nel kernel di Linux: se l'opzione di mount default_permissions NON viene utilizzata insieme a allow_other, i risultati del primo controllo delle autorizzazioni eseguito dal file system per una voce della directory verranno riutilizzati per gli accessi successivi fintanto che l'inode della voce accessibile è presente nella cache del kernel, anche se le autorizzazioni sono state modificate e anche se l'accesso successivo viene effettuato da un altro utente.
MountainX per Monica Cellio,

0

ha avuto lo stesso problema, penso che tu abbia bisogno di auto per essere noauto. non dovrebbe montarsi all'avvio, dovrebbe montare quando l'eth è attivo


6
Penso che il "mount solo quando la rete è pronta" sia già stato chiesto usando _netdev, e cambiare con noautonon renderebbe possibile il mount all'avvio (solo esplicitamente quando si usa il comando mount )
Ad N

0

Se devi montarlo da un server DNS autorevole /etc/fstabe il nome host del tuo server SFTP remoto è fornito da questo server DNS, sicuramente non sarai in grado di connetterti perché il nome host non può essere ancora risolto. Il server DNS deve essere in esecuzione durante il tentativo di montaggio oppure è necessario trovare un metodo alternativo per ottenere l'indirizzo IP del server remoto.

In questo caso, puoi scegliere una delle seguenti soluzioni:

  • Aggiungi l' delay_connectopzione in modo da consentire alla sequenza di avvio di continuare e dopo che la sequenza di avvio ha avviato il server DNS si connetterà.
  • Aggiungi il nome host del tuo server SFTP remoto al tuo /etc/hostsfile locale con l'indirizzo IP appropriato.
  • Utilizzare l'indirizzo IP del server SFTP remoto fstabanziché il nome host.

Puoi espandere l' delay_connectopzione? Dove viene aggiunto? Modifica la tua domanda per includere ulteriori informazioni al riguardo.
AJefferiss,

Lo si aggiunge all'elenco delle opzioni fstab: sshfs # user @ host: / remote / mnt / local fuse delay_connect, uid = 1000, gid = 100, umask = 0, allow_other 0 0
Tony
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.