May 22, 2009

Using SSHFS to remote mount a Windows System.

Try hard as we might, it's impossible to get away from the OS from Redmond.  All too often we need to be able to get a file off or onto a Windows system in a secure manor.  Samba won't work over the Internet, NFS isn't an option either over the internet.  Linux to the rescue, along with some FOSS for Windows. 

FUSE or File sytem in USEr space, allows Linux to create file systems of multiple kinds that can be mounted and manipulated by an unpriviledged user, meaning no root privileges are needed at any time.  SSHFS or SSHFile System, is the type of file system we will use. Other Windows connectable file systems exist but since we are going over the open Internet and we want data integrity, and security I've chosen SSHFS for this.  I've tested it on win2k XP and 2003 server so far without a problem.

Step one: go to  http://sshwindows.sourceforge.net/download/ and grab the binary installation file for Windows. (Currently i386 version only) Install this on the Windows system you wish to mount from a remote location.  The process on how to install an application on Windows and create Users is an exercise I'll leave to the reader.  However to someone who is familiar at all with SSH running the install and answering it's questions should be straight forward.  NOTE: If you have cygwin installed you should install the SSH server with cygwins package manager as it will be less likely to cause a conflict. At this point, from your Linux box ssh into the windows box and make sure it all works.  Once it does.  You are done with the windows work.

 Step two:  If you are running RHEL/CentOS 5.x  the modules you need will already be installed in the running kernel, and the packages will be available in the normal repository.  RHEL/CentOS 4.x will require that you use either DAG's repository or do the normal configure/make/make install routine.  I highly recommend DAG's work as it's always rock solid, and his packages are correctly integrated into RH/CentOS system so as to not cause future conflicts.  Ubuntu and Deb (sarge and Lenny) both have FUSE available in the apt repository and the dependency will be brought in when you install SSHFS.  

Step three:  Install SSHFS With RHEL/CentOS you will need DAG's repository setup.  Then just yum install fuse-sshfs, or Ubuntu/Debian do apt-get sshfs.  All dependency's will be pulled.  The following should be taken care of before you begin.  Edit /etc/group (I use vigr) and add all users who you want to be able to use SSHFS into the group fuse.  Once this is done we are ready to test things out.

Now we get to mount our remote windows system.  Create a dir in your home directory to mount the remote system and then prepare to do a simple test run. 

 usage: sshfs [user@]host:[dir] mountpoint [options] 

 Is the proper format for running the command, and remember that if you skip the [user@] portion, just as in Linux it will assume that your current logged in user is the username to use on your remote server as well.  

 #> sshfs myname@mywinbox: /myhome/mountpoint  

This will grab the user home or C: (depending on System) mount it locally and give you access to read/write these files as if they were locally held.  Also at the same time any user on the Windows box will also be able to read/write the same file (no file locking is provided. ) so it's best to co-ordinate with the user on the other end if needed.  

At this point the movement of files will be at the same speed as a normal ssh, man sshfs can be read and used to fine tune the sshfs mount the most important from my viewpoint is the ability to set the UID and GID of the files so that the correct user has access to them.  Again since this isn't a comprehensive tutorial, I'll leave it to the reader to learn from the man page. 

Click Here!