Sometimes I need to access a drive on a remote computer and pluck out a file I need. I don't need to do it often, I don't want or need a VPN or any other kind of thing. I just want to mount the drive over SSH and pluck that file.
Here is how I do it on the Nokia N900
There is a bit of typing involved and whilst the N900 keyboard is good It's easer to SSH in and do it from the laptop. So install ssh server on the N900
I installed ssh server from the Application Manager. It asks you to set a root pass on install. We are going to need the ssh client as well, I have previously installed this but if you haven't choose the ssh client and server app instead.
You probably want to set up keys for access but can stick with password if security or your memory is not a worry. There is a good guide on talk.maemo.org on how to do this.
Open XTerminal and find the IP address of the N900 using ifconfig (I'm connecting via my wireless network)
Open a terminal on your laptop or desktop and SSH in to the N900
ssh root@1.2.3.4
Add the extras development repositoriesEcho "deb Http://Repository.maemo/Org/Extras-Devel/ Fremantle Free Non-Free" "/ etc / apt / sources.list.d / extras-Devel.list
Apt-get update
Then install sshfs
sudo apt-get install sshfs
Before I create a mount point I should mention that initially I could not see the full file structure of /home/user/MyDocs in XTerminal - I could see /home/user/MyDocs/DCIM but nothing else even though I could see more directories in the gui file manager. I installed GPE file manager from the Application manager and this fixed this in XTerminal. I presume it must has installed some extra dependencies. Though not sure what.
Create a mount point on the N900
mkdir /home/user/MyDocs/mounts/remotemount1
Next you create an SSH tunnel
ssh -L localhost:22:192.168.254.21:22 87.80.73.172 -p 22
Then mount using sshfs
sshfs username@localhost:/ /home/damien/mounts/wkstn00 -p 22
(You don't need those 22's in there or the -p switch as it's the default port for SSH but for security you should change ssh to run off a different port and put that port number in there instead)
If this works make it into a script and put in /usr/bin so it can be run as a command. To do this modify the ssh tunnel command by forking it -f and putting a delay to let it connect before running the sshfs mount command.
ssh -f -L localhost:1233:192.168.254.21:22 87.80.73.172 -p 1234 sleep 10
Below is my full script. In the script I have replaced my internal IP addresses with 1.2.3.4 and external with 93.93.93.93, my non standard ports I have also changed to 1234 and 1233. I added a routine to check for a number of switches - the example below will mount over ssh, create a vnc session over ssh (you'll have to install vnc) or run a file you feed to it.
#! /bin/bash
#thanks to http://tldp.org/LDP/abs/html/testbranch.html for the command line parameter testing routine
while [ $# -gt 0 ]; do # Until you run out of parameters . . .
case "$1" in
-myWorkstation|-w)
# myWorkstation parameter?
# tunnel to myWorkstation ssh -f -L localhost:1233:1.2.3.4:22 93.93.93.93 -p 1234 sleep 10
#mount filesystem
sshfs damien@localhost:/ /home/username -p 1233
;;
-vnc|-v)
#vnc parameter?
#tunnel to myWorkstation
ssh -f -L localhost:1234:1.2.3.4:5900 93.93.93.93 -p 1234 sleep 10
#vnc to machine
vncviewer localhost:1234
;;
-c|--conf)
CONFFILE="$2"
shift
if [ ! -f $CONFFILE ]; then
echo "Error: Supplied file doesn't exist!"
exit $E_CONFFILE # File not found error.
fi
;;
esac
shift # Check next set of parameters.
done
Save this script to /usr/bin with a cool name and appropriate execute permissions
chmod +x /usr/bin/mymount
Then run the script with the switch
mymount -w
I then discover it won't mount as the N900 user is not part of the group that owns fuse. I look at /dev/fuse and see it is owned by root and has group root - ie
ls -l /dev/fuse
gives permissions as root:root. This maybe because I am ssh-ing in as root from the laoptop, and installed sshfs that way. This is never recommended, I will create a proper non root ssh user in future.
To fix this a sensible person might set up new group called fuse and set to root:fuse then add user to fuse group.
So at his point I added addusersudo apt-get install adduser
However I am again lazy and just set /dev/root to be owned by user. Only for the time being you understand.
chown user:root /dev/fuse
The mount command mymount -w now runs fine as user and after running it I can browse the remote drive via the standard GUI file manager on the N900 as if it's a local drive.






