我正在尝试在启动时在 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 中看到该消息,除非您使用上述语法将其重定向到其他地方并附加到命令中。