如何使用sshfs自动挂载?


14

我正在使用以下命令将ssh ubuntu目录安装到我的ubuntu pc。

sshfs user@192.xx.xx.xx.xx:/dir/dir /home/username/mount/xxx

我的问题是,我可以在桌面上为此创建脚本吗?在需要挂载驱动器而无需始终手动键入命令的情况下,可以双击并运行该脚本。

Answers:


15

您可以通过将.desktop-file 拖放到此处来创建启动器并将其添加到启动器栏中:

    #!/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 user@192.xx.xx.xx.xx:/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://user@192.xx.xx.xx.xx/dir/dir
    Comment[en_US]=Connect to xy via ssh
    Name=Connect to xy
    Comment=Connect to xy via ssh
    Icon=nautilus

建议-更少的工作:

如果您需要更少的工作(= autoconnect)和图形用户界面,则可能需要签出Gigolo 安装gigolo。每当有加书签的文件系统存在时,它都具有自动挂载书签的功能。您可能想检查一下。

sudo apt-get install gigolo   # or use the install link above

运行gigolo。首选项中有一个选项可以将其置于自动启动状态,而另一个选项可以激活任务栏图标。同时检查。然后添加您的书签。

这是屏幕截图:

在此处输入图片说明

壳方式

另一种解决方案是将以下行放在crontab中(/etc/crontab使用sudo特权进行编辑):

@reboot sshfs user@192.xx.xx.xx.xx:/dir/dir /home/username/mount/xxx

但是,由于运行命令时不存在Ubuntu的密码管理器,因此您需要使用无密码的私钥/公钥对对所讨论的ssh服务器进行身份验证(或类似的身份验证方法)。这将在每次重新启动时将其安装。

另一个解决方案是编辑您的文件/etc/fstab(如果您的Ubuntu版本提供了该选项)。


1
我不能使用舞男。Coz我想在主文件夹中使用特定的安装点。您的第一个解决方案似乎不错。但是我不清楚文件的命名。您给定了“ .desktop-file”是该文件名或扩展名。请给我更多有关文件命名的示例。我可以尝试一下。
BlueBird 2011年

这是扩展。Ubuntu中的所有启动器均以“ .desktop”结尾。创建一个空文件。将我上面发布的文本复制到其中。用适合您的名称替换“ Name =“后面的文本,并替换“ Exec =”后面的文本中的实际路径。然后将其另存为“ connect.desktop”或“ mountxy.desktop”(例如)。保存文件后,将其拖放到启动器面板中或任何需要的位置。
con-f-use

大!!有效。
BlueBird 2011年

8
OMG ...程序的最糟糕名字。
Lekensteyn

显然,不再有添加gigolo来自动启动的选项,因此您必须自己做。运行gnome-session-properties并添加/usr/bin/gigolo命令。无法选择安装点,但是可以创建指向主目录的符号链接(使用ln -s)。通过右键单击文件管理器中的文件夹并选择,可以找到原始安装点Open in Local Terminal
Seppo Enarvi

4

这个论坛主题显示了一种创建自动挂载SSHFS的方法,在我看来,这正是您想要执行的操作。


该线程已经很老了,我们现在可以使用x-systemd_netdev选项来添加依赖于网络的安装。
Turgon

3

您只需将其键入到Shell脚本中,然后即可在桌面上为其创建启动器。

例如mountssh.sh

#!/bin/bash
shfs user@192.xx.xx.xx.xx:/dir/dir /home/username/mount/xxx

确保chmod +x mountssh.sh执行然后单击它将执行

或者,您可以通过gvfs挂载它,方法是在桌面上单击鼠标右键,然后创建带有URL参数的启动器ssh://user@192.xx.xx.xx.xx/dir/dir。默认情况下,它安装到~/.gvfs/...。如果要坚持使用/home/username/mount/xxx,则可以创建从gvfs一个到此的符号链接。


我在桌面上创建了文件“ mount-192.168.1.5.sh”。当我双击它时,它将用gedit打开。
BlueBird 2011年

您必须在任何位置创建具有可执行特权的sh文件,并在桌面上创建一个指向该.sh文件的启动器。
伊拉德里安

2

您甚至可以更进一步,让autofs为您解决安装问题。由于autofs不适用于SSH公钥身份验证(除非您想为超级用户创建无密码密钥对),因此有一些工具可让您使用用户的SSH密钥,ssh-agent和钥匙串:

  • autosshfs:每个用户SSHFS挂载使用用户的SSH配置
  • afuse:使用FUSE实现的自动安装程序

0

我以完全相同的方式挂载文件夹,我所做的是创建一个自定义启动器,该启动器指向.sh包含命令的文件。只需确保文件具有执行权限即可。

我只需单击启动器:

在此处输入图片说明


0

我试图使用cron自动挂载ssh目录,但这会导致错误提示Network is unreachable。这是因为cron作业执行还为时过早,无法建立ip连接。在sshfs命令前插入sleep之后,它成功安装了ssh目录。

sleep 5 && sshfs ......

因此,我编写了此脚本来满足我的要求。

#! /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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.