Ever heard network file system (NFS)? Yeah, that’s good.
But in this article we won’t discuss NFS, just something similar in term of access remote directory locally. SSHFS is file system over SSH. It is a mean to mount directory / partition on remote server on our local box. The cool thing is it use SSH, a Secure Shell connection, as media to transfer data. The SSH itself is secure protocol, all data transmitted / received is through encrypted channel thus the secrecy is guaranteed.
In this article, I use following to demonstrate:
- ParrotSec as local Linux
- Remote Linux (pick one)
- VirtualBox to virtualize machine
Generally speaking, the Arch Linux would be installed as guest using VirtualBox. We will make sure ArchLinux has SSH server and we can login to it. Then we install SSHFS on our local / host box. All the steps then be used to mount our local box to remote box.
Our goal in this article is we can install and mount linux partition on our box.
I assume Arc linux is up and running. You can also use other Linux, as long as it can be installed SSH server.
We need to install SSHFS on local. As I use ParrotSec which is Debian derivative, I invoke following command:
apt-get install sshfs
If you are using other Linux, you would achieve the same by invoking:
# ArchLinux pacman -S sshfs fuse # CentOS ### SSHFS is on EPEL repository so we should add EPEL first http://ftp-stud.hs-esslingen.de/pub/epel/7/x86_64/e/epel-release-7-5.noarch.rp yum update ### installing SSHFS yum install fuse-sshfs
All we need is SSH server. SSH server is used to receive ssh connection. We use OpenSSH-server here.
# Arch Linux pacman -S openssh systemctl start sshd # Debian apt-get install openssh-server service sshd start # CentOS yum -y install openssh-server chkconfig sshd on service sshd start
Or you can install Dropbear, alternative SSH server
# Arch Linux pacman -S dropbear systemctl start dropbear # Debian apt-get install dropbear service dropbear start # CentOS ### dropbear is on EPEL repository so we should add EPEL first http://ftp-stud.hs-esslingen.de/pub/epel/7/x86_64/e/epel-release-7-5.noarch.rp yum update ### installing dropbear yum install dropbear service dropbear start
Make sure both end can ping each other. For the sake of simplicity, I will use following network situation:
local: IP 192.168.56.1/24 GW 192.168.56.1 remote: IP 192.168.56.101/24 GW 192.168.56.1
Create user remote on remote server try to login from our local machine:
Create a directory (or using existing partition) and create two files on it.
mkdir /home/remote/mydir echo "Please read this file for me" > /home/remote/mydir/file1 touch /home/remote/mydir/file2
Next we create a directory in our local machine as a mount point.
mkdir -p /mnt/sshfs/1
Next we try to mount freshly created directory
sshfs [email protected]:/home/remote/mydir /mnt/sshfs/1 -o workaround=all,allow_other
As we mount it with allow_other, any user on our local box can access the file and directory mounted. Any I/O operation to them will be redirected to remote server and performed as the referred user (remote).
To prove it, read the /mnt/sshfs/1/file1 on our local box. And then write something to /mnt/sshfs/1/file2 and read /home/remote/mydir/file2 on remote server.
# Local cat /mnt/sshfs/1/file1 echo "Xathrya has came" > /mnt/sshfs/1/file2 # Remote cat /home/remote/mydir/file2 ls -la
See the result for yourself.network