30

Setting up some Ubuntu (13.04) workstation, I am trying to have a remote filesystem mounted (over ssh).

The current config

  • I created user someuser and added it to the fuse group

  • My fstab entry reads like :

    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
    

from my understanding :

  • auto : is explicitly asking for the remote fs to be mounted at boot
  • _netdev : wait for interface to be up before attempting to mount
  • user : allow any user to ask for this specific remote location to be mounted (useless in the perspective of the root user automatically mounting it at boot)
  • allow_other : will allow any user (in the fuse group ?) to access the mounted fs
  • IdentityFile : points to the private key paired with the public key added in the /home/someuser/.ssh/authorized_key of the remote machine.
  • reconnect : Not sure... Will attempt to reconnect if the connection is lost ?

The problem

  • At boot, I log with someuser, fire up a terminal, and /media/remote_dir is empty.

  • But from the same user (or the root), I can mount it just typing :

    mount sshfs#someuser@remote.com:/remote_dir
    

    It is also auto-magically mounted if I click on remote_dir in a file browser.

Any clue regarding what could be missing ?

Ad N
  • 410

4 Answers4

28

I experienced the exact same problem after upgrading from Oneiric (where the automount worked fine) to Precise.

What solved the problem for me was adding the delay_connect option. In addition, I've been using the option "workaround=rename" already before, since Oneiric times. Not sure whether it is still needed today, but at least it doesn't seem to hurt.

My full /etc/fstab line is:

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

You obviously would need to adapt user/group IDs to your own environment.

Braiam
  • 69,112
lbo
  • 461
1

If you are to mount it from an authoritative DNS server's /etc/fstab and the host name of your remote SFTP server is provided by this DNS server you are certainly not going to be able to connect because the host name can not be resolved yet. Either the DNS server has to be running while attempting to mount or you have to find an alternative method to obtain your remote server's IP address.

If this is the case, you can pick any of the following solutions:

  • Add the delay_connect option so it will allow the boot sequence to continue and after the boot sequence has started the DNS server it will connect.
  • Add your remote SFTP server's host name to your local /etc/hosts file with the appropriate IP address.
  • Use your remote SFTP server's IP address in the fstab instead of host name.
Tony
  • 21
1

Also to complement all previous comments,

  1. Make sure you allow non-root users to specify the allow_other mount option in /etc/fuse.conf

  2. Make sure you use each sshfs mount at least once manually while root so the host's signature is added to the ~/.ssh/known_hosts file.

    sshfs [user]@[host]:[remote_path] [local_path] -o allow_other,IdentityFile=[path_to_id_rsa]
    
Anwar
  • 77,855
0

had the same problem, i think you need auto to be noauto. it shouldnt mount on boot, it should mount when the eth is up

Zaqwsx
  • 101