One may wonder what is sshfs and why would you want it? Well simply put, sshfs allows you to mount another server’s filesystem into a folder on your local system which in the background is doing ssh commands and transfers. As a mounted folder, you are able to move about and copy files back and forth as everything was on local server. As you can see this makes it very easy for you to work with files on multiple servers.
Note:Â you only have to do the following installations on the server where you are doing the mounts on.
Let us download and install the filesystem framework which is a requirement for sshfs called fuse.
wget http://voxel.dl.sourceforge.net/sourceforge/fuse/fuse-2.7.4.tar.gz
tar zxpfv fuse-*.gz
cd fuse*
./configure
If you get the following error, you will either have to point to the location of the kernel source or install it if needed.
checking kernel source directory... Not found
configure: error:
*** Please specify the location of the kernel source with
*** the '--with-kernel=SRCDIR' option
configure: error: ./configure failed for kernel
In our case here, we will be installing the source using yum.
yum -y install kernel-devel
Once installed, you will have to find out the directory it is installed in
ls -l /usr/src/kernels/
total 4.0K
drwxr-xr-x 18 root root 4.0K Oct 7 14:50 2.6.18-92.1.13.el5-x86_64/
./configure --with-kernel=/usr/src/kernels/2.6.18-92.1.13.el5-x86_64
make && make install
cd ..
Now let us get sshfs source and install it.
wget http://voxel.dl.sourceforge.net/sourceforge/fuse/sshfs-fuse-2.1.tar.gz
tar zxpfv sshfs*
cd sshfs-fuse-*
./configure
If you get the following error:
checking for SSHFS... configure: error: The pkg-config script could not be found or is too old. Make sure it
is in your PATH or set the PKG_CONFIG environment variable to the full
path to pkg-config.
OR
checking for SSHFS... configure: error: Package requirements (fuse >= 2.2 glib-2.0 gthread-2.0) were not met:
No package ‘glib-2.0’ found
No package ‘gthread-2.0’ found
You need to install glib2. Do the following:
yum install glib2-devel
Once installation is done, continue with configure.
./configure
make && make install
After installation is done, we can move on with testing the installation:
cd /mnt
mkdir test
sshfs 10.0.0.2:/ test
If you get the following error,
sshfs: error while loading shared libraries: libfuse.so.2: cannot open shared object file: No such file or directory
execute this: NOTE: this is for x64 system. If you have 32 bit system, you have to symlink to /lib instead.
ln -s /usr/local/lib/libfuse.so.2 /lib64/
Let us try mounting again:
sshfs 10.0.0.2:/ test
At this point it would be like if you were making a ssh connection to 10.0.0.2 You will have to type in a password to get the mount to happen. You may get the following error: fuse: device not found, try 'modprobe fuse' first
If you do ‘modprobe fuse’, as they tell you to, and you get:
modprobe fuse
FATAL: Module fuse not found.
That means your running kernel is not the same version as the one you compiled with. You have two options here:
1) you can upgrade your kernel by typing: yum update kernel
2) find the source files for the kernel you have running and recompile fuse.
I went with option 1. Once you do the update, reboot and try doing modprobe fuse again.
At this point we can try doing the mount again.
cd /mnt
sshfs 10.0.0.2:/ test
If you do not get any errors, do df -h to see the mount:
...
sshfs#10.0.0.2:/ 1000G 0 1000G 0% /mnt/test
...
At this point you can browse 10.0.0.2 server filesystem as it was local on your server.
————————————-
DISCLAIMER: Please be smart and use code found on internet carefully. Make backups often. And yeah.. last but not least.. I am not responsible for any damage caused by this posting. Use at your own risk.