使用 fstab 自动挂载 sshfs,无需 mount -a

使用 fstab 自动挂载 sshfs,无需 mount -a

请考虑以下 fstab 行(为便于阅读而换行):

sshfs#[email protected]:/home/user/ 
/home/user/Server/ 
fuse    
auto,user,_netdev,reconnect,uid=1000,gid=1000,IdentityFile=/home/user/.ssh/id_rsa,idmap=user,allow_other  
0 

它运行正常,但每次重启我都需要使用它mount -a来挂载服务器(或单击 Thunar 中的相应图标来挂载它)

是否可以在启动时立即挂载我的 ssh 目录?

我正在使用 Xubuntu 13.10

答案1

在 /etc/fstab 文件中,在启动时挂载 sshfs 共享的正确语法是

 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

这是对非系统化发行版中包含的说明这里. 如果你在systemd发行版(Arch、Fedora、OpenSUSE……),合适的指令是:

USERNAME@HOSTNAME_OR_IP:/REMOTE/DIRECTORY  /LOCAL/MOUNTPOINT  fuse.sshfs x-systemd.automount,_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/fstab 行:

USER@HOSTNAME:/REMOTE/ /LOCAL/ fuse.sshfs delay_connect,_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

答案3

这些delay_connect_netdev、 ... 是正确的,但除非你调整网络,使其恰好在(或之前)处理 /etc/fstab 的那个小时间窗口内启动,否则它们将不起作用。当处理结束,网络稍后启动时,你必须使用mount -a(或朋友)。

在大多数情况下(包括我的),这network-manager会导致问题,因为它会使网络启动登录后默认情况下。可以对其进行调整,使其在启动时更早启动。如果我没记错的话,您需要做的就是选中Available to all users连接属性对话框中的选项(或者,如果您更喜欢命令行,请在 中手动创建连接/etc/NetworkManager/system-connections)。

答案4

@MariusMatutiae 的回答很好,但我认为缺少一个非常重要的观点。在给定的关联对 Arch Wiki 来说是这样。

最重要的是,在客户端计算机上以 root 身份手动使用每个 sshfs 挂载至少一次,以便将主机的签名添加到客户端的 /root/.ssh/known_hosts 文件中。这也可以通过将一个或多个 SSH 服务器的公共主机密钥(/etc/ssh/ssh_host_*key.pub 文件)附加到 /root/.ssh/known_hosts 来手动完成。

实际上,您不必挂载 sshfs 即可使其工作。只需将公钥添加到 rootroot即可。sudo ssh yourserver

几年前,我曾在 Ubuntu 服务器上安装过它,我记得当时很纠结,但记不起解决方案是什么。现在我切换到 OpenSUSE,出于同样的原因,我又一次陷入了困境,直到我决定阅读 Arch Wiki 页面。所以也许这对其他人有帮助。

相关内容