I am using the following command to mount a ssh ubuntu directory to my ubuntu pc.
sshfs [email protected]:/dir/dir /home/username/mount/xxx
My question is, can I create a script for this in my desktop where I can make a double click and run this script when ever I need to mount the drive without manually typing the command always.
You could create a launcher and add it to your launcher bar by drag&dropping the
#!/usr/bin/env xdg-open [Desktop Entry] Version=1.0 Type=Application Terminal=false Icon[en_US]=nautilus Name[en_US]=Connect to xy Exec=shfs [email protected]:/dir/dir /home/username/mount/xxx #OR: to mount and than open in nautilus (note the '/dir' where ':dir' used to be) #Exec=nautilus sftp://[email protected]/dir/dir Comment[en_US]=Connect to xy via ssh Name=Connect to xy Comment=Connect to xy via ssh Icon=nautilus
Suggestion – even less work:
If you want even less work (=autoconnect) and a graphical user interface, you might want to check out Gigolo . It has the capability of auto-mounting a bookmark, whenever the bookmarked filesystem is present. You might want to check that out.
sudo apt-get install gigolo # or use the install link above
gigolo. There is an option in the preferences that puts it into autostart and another to activate the tray icon. Check both. Then add your bookmark.
Here is a screenshot:
Another solution would be to put the following line in your crontab (edit
/etc/crontab with sudo privileges):
@reboot sshfs [email protected]:/dir/dir /home/username/mount/xxx
But since Ubuntu’s password manager is not present when the command is run you need to use a password-less private/public key pair to authenticate with the ssh server in question (or a similar method of authentication). This would mount it on every reboot.
Yet another solution would be to edit your
/etc/fstab (providing your Ubuntu-Version provides that option).
This forum thread shows a method of creating an automounting SSHFS which seems to me exactly what you would like to do.
You can simply type this to a shell script, and you can create a launcher for it at the desktop.
#!/bin/bash shfs [email protected]:/dir/dir /home/username/mount/xxx
make sure to
chmod +x mountssh.sh and then clicking it will execute
Alternatively, you can mount it via gvfs, by right clicking at the desktop, and creating a launcher with URL parameter:
ssh://[email protected]/dir/dir. By default it mounts to
~/.gvfs/.... If you want stick with the
/home/username/mount/xxx, you can create symlink from the gvfs one to this.
You could even take it a step further and have autofs take care of the mounting for you. Since autofs doesn’t work particularly well with SSH public key authentication (unless you want to create a passwordless key pair for the superuser), there are tools that allow you to use the user’s SSH keys, ssh-agent and keychain:
I mount a folder the exact same way, what i did was create a custom launcher that points to a
.sh file that contains the command. Just make sure the file has execution permission and you’re good to go.
I just click on the launcher:
I tried to use cron to automatically mount ssh directory, but it causes an error saying
Network is unreachable. It is because the cron job execution is too early to establish ip connections. After I inserted sleep before the
sshfs command, it successfully mount the ssh directory.
sleep 5 && sshfs ......
So I made this script to fulfill my requirement.
#! /bin/sh while true do ping -c1 -w1 ssh_server_ip > /dev/null && break done sshfs -o reconnect,ServerAliveInterval=15,ServerAliveCountMax=3 sshname:/mountpath /localmountpath
EDIT: I am adding fstab method, since no one talks about it in this page.
if you don’t want hacks and use the builtin advanced mounting features,
you need to use /etc/fstab and never look back.
[email protected]:/remote/folder /mount/point fuse.sshfs noauto,x-systemd.automount,_netdev,IdentityFile=/home/name/.ssh/id_rsa, allow_other,reconnect 0 0
“noauto” will stop the no-brainer actions like forcibly mounting whatsoever at booting regardless netif is up or not.
“x-systems.automount” is the smart daemon that knows when to mount.
“_netdev” tag will also identify that it uses network devices. thus no-brainer will wait until the net is up.