请考虑以下 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 页面。所以也许这对其他人有帮助。