This is Gentoo's testing wiki. It is a non-operational environment and its textual content is outdated.
Please visit our production wiki at https://wiki.gentoo.org
SSHFS
SSHFS (SSH File System) is a secure shell client used to mount remote filesystems to local machines. SSHFS uses fuse to mount filesystems in userspace.|
sshfs (SSH File System) is a secure shell client used to mount remote filesystems to local machines. SSHFS uses Filesystem in Userspace (FUSE) to mount filesystems in a location users can easily access.
Installation
Kernel
Since SSHFS uses FUSE it will need to be enabled in the kernel.
File systems ---> [*] FUSE (Filesystem in Userspace) support
When enabling a built-in (non-modular) feature or driver in the kernel remember a recompile will be needed and the new kernel loaded into memory (system reboot) before changes will take effect. This step should be completed before moving on to other sections in this article.
USE flags
There are currently no available USE flags for SSHFS.
Emerge
Use the emerge command to ask Portage to install net-fs/sshfs:
root #
emerge --ask net-fs/sshfs
Usage
In order to use SSHFS a SSH daemon needs to be running on the remote machine.
To mount a remote file system locally the right privileges will be needed. When attempting to mount a remote directory without adding a user name to the command the current active user name will be used by default. For example, if the user Larry is currently the active user on the system and this command is ran:
larry@example $
sshfs remotehost:/usr/portage/ /mnt/portage
The command will most likely fail because larry's user name will be sent to the remote system. The previous command is the equivalent of running this command:
larry@example $
sshfs larry@remotehost:/path/to/remote/system /path/to/local/sshfs/mount
To change the user, put the name of the user before the IP address to domain name. For example, to login to the remote system using the remote system's root user name and password, use:
user $
sshfs root@remotehost:/path/to/remote/system /path/to/local/sshfs/mount
Mounting
larry@example $
sshfs larry@remotehost:/path/to/remote/directory /path/to/local/sshfs/mountpoint
Unmounting
To unmount a directory with SSHFS use the fusermount command with the -u
option:
larry@example $
fusermount -u /path/to/local/sshfs/mount
Permissions based options
In order to have read/write access to a mounted remote directory you may need to use the allow_other and/or allow_root options depending on if you are a regular user or root. Simply enable as shown below (replace allow_other with allow_root, if root).
larry@example $
sshfs -o allow_other larry@remotehost:/path/to/remote/directory /path/to/local/sshfs/mountpoint
Alternatively, the uid, gid, and umask options can be used to further fine tune permissions. When setting multiple options at the same time use a space separated list after a single -o.
-o umask=M set file permissions (octal) -o uid=N set file owner -o gid=N set file group
Automating the connection
For remote file systems that need to be mounted frequently, it is wise to automate the sign in process. Automation can be achieved by an public/private SSH key pair combined with special instructions to mount the remote filesystem on a specific event (user login, or system boot for example).
The first step is to setup the SSH key pair on the local and remote machines. Visit the Passwordless Authentication section of the SSH article for further instructions on how set up an SSH key pair. When finished return to this article.
After the key pair has been created and properly set up, determine what event will be used to start the connection automatically. It is common for a system to attempt to remotely mount a file system upon user login or system boot. Controlling the sshfs mount depends on what software the user will be implementing in their local environment. There are several ways to handle the task.
fstab
sshfs can be used inside a system's fstab file. This enables over-the-network filesystems to be assigned to act as local filesystem mounts. Filesystems using sshfs require slightly different mount options, so be sure to look at the man page to be sure the options are correct in each use case. A example of using sshfs in fstab:
# Automatically mount ~/Music on connection sshfs#SERVER_USER@remotehost:/SOURCEDIR /home/USER/Music fuse user,_netdev,idmap=user,transform_symlinks,identityfile=/home/USER/.ssh/id_rsa,allow_other,default_permissions,uid=1000,gid=1000 0 0
Login shells
Most shells include support for commands to be executed during user login or logout. This section will provide examples on how to automate the connection using built in shell script.
Before proceeding, it is necessary to know which shell is being used. Execute the following command as the user of interest to determine which shell is being used:
user $
echo $SHELL
Possible output:
- /bin/bash for bash
- /bin/sh for sh
- /bin/tcsh for tcsh (csh)
- /bin/zsh for zsh
For more information on available shells see the Shell article.
Bash
When using a bash shell, create a ~/.bash_login and ~/.bash_logout files in the user's home directory and add the sshfs command to the file.
user $
touch ~/.bash_login ~/.bash_logout
Mount on shell login:
# Added to mount a remote directory at user login sshfs larry@remotehost:/path/to/remote/directory /path/to/local/sshfs/mountpoint
Unmounting on shell logout:
# Added to unmount a remote directory at user logout fusermount -u /path/to/local/sshfs/mountpoint
Sh
user $
touch ~/.profile
# Added to mount a remote directory at user login sshfs larry@remotehost:/path/to/remote/directory /path/to/local/sshfs/mountpoint
Zsh
user $
touch ~/.zlogin
# Added to mount a remote directory at user login sshfs larry@remotehost:/path/to/remote/directory /path/to/local/sshfs/mountpoint
Tcsh (Csh)
user $
touch ~/.login
# Added to mount a remote directory at user login sshfs larry@remotehost:/path/to/remote/directory /path/to/local/sshfs/mountpoint
Desktop environments
Most desktop environments include methods for automatically starting programs.
GNOME
KDE
OpenBox
OpenBox uses the autostart file located in each user's home directory.
# Added to mount a remote directory at user login sshfs larry@remotehost:/path/to/remote/directory /path/to/local/sshfs/mountpoint &
It is important to include the
&
(ampersand) on the end of commands issued inside OpenBox's autostart file.See also
- CurlFtpFS - Allows the mounting of a FTP folder as a regular directory to the local directory tree.
- SCP - A secure copy program.
- SSH - Secure Shell.
- SFTP - Security File Transfer Protocol.