启动时自动挂载远程文件夹

启动时自动挂载远程文件夹

我正在尝试在启动时在 Ubuntu 机器上安装 Windows 文件夹。我尝试按照此页面操作这里,修改 /etc/fstab 并附加到sshfs#my_user@remote_host:/path/to/directory <local_mount_point> fuse user 0 0其中,但失败了;在启动时,我收到一个错误,说挂载失败,我可以按 S 跳过或按 M 手动恢复。

我也尝试关注此页面这里,附加/usr/bin/sshfs -o idmap=user my_user@remote_host:/path/to/directory <local_mount_point>到 /etc/rc.local 文件,但这也无济于事;Ubuntu 只是正常启动而没有挂载。

我在 Windows 机器上安装了 Cygwin,可以顺利运行所有操作,例如无需密码即可进行 ssh 和手动挂载。我还尝试运行修改后的 rc.local 文件$ /etc/rc.local,它运行正常,但我似乎无法在启动时挂载文件夹。

有人能帮我吗?

编辑:远程是指我尝试从 Windows 计算机(具有公共 IP)挂载的文件夹不在同一网络上。我使用的是 sshfs,而不是 nfs。

答案1

在我的 Ubuntu 机器上,我通过添加以下行修改了我的 /etc/fstab:

 //192.168.xx.yy/Public /mnt/PUBNAS nfs rw,_netdev,credentials=/home/myname/.smbcredentials 0 0

.smbcredentials 文件非常简单,

 username=myusername                                                                            
 password=mypassword

编辑:

在意识到您使用 sshfs 后,我测试了Arch Linux 维基页面对我来说,这个条目有效:

USERNAME@HOSTNAME_OR_IP:/REMOTE/DIRECTORY  /LOCAL/MOUNTPOINT  fuse.sshfs  defaults,_netdev  0  0

无需密码即可访问服务器非常重要(IE,使用加密密钥)。我希望这可以弥补我最初的错误。

编辑2:

如果您希望自己而不是 root 来挂载远程文件夹(这确实很麻烦),则必须将 /etc/fstab 行更改为如下内容:

 USERNAME@HOSTNAME_OR_IP:/REMOTE/DIRECTORY  /LOCAL/MOUNTPOINT  fuse.sshfs _netdev,user,idmap=user,transform_symlinks,identityfile=/home/USERNAME/.ssh/id_rsa,allow_other,default_permissions,uid=USER_ID_N,gid=USER_GID_N 0 0

答案2

我实际上在这里仔细研究了您的场景,我想知道您是否确保将执行位添加到您最初创建的 /etc/rc.local 文件中(在您关注的 howtoforge.com 文章的末尾)

chmod +x /etc/rc.local

现在重新启动。

答案3

您能验证 rc.local 在启动时是否正在执行吗?在其中放入一些内容:

回显‘测试’>> /tmp/my.log

接下来,查看是否有任何错误输出,附加到您的挂载命令:

&> /tmp/my.log

也许当您手动执行文件时,您运行它时所用的用户与内核运行它时所用的用户不同。在这种情况下,一条消息将被写入 STDERR,您通常会在 /var/log/messages 中看到该消息,除非您使用上述语法将其重定向到其他地方并附加到命令中。

相关内容