重启后 sshfs 文件夹为空

重启后 sshfs 文件夹为空

我正在使用 Ubuntu 22.10“Kinetic Kudu”,并尝试按照在线获得的说明通过 sshfs 挂载文件夹:

sudo sshfs -o allow_other,default_permissions server@address:~/ /home/user/Documents/folder

然后sudo nano /etc/fstab我添加以下行:

server@address:~/ /home/user/Documents/folder fuse.sshfs noauto,x-systemd.automount,_netdev,reconnect,identityfile=/home/user/.ssh/id_rsa,allow_other,default_permissions 0 0

我不确定“ useridentityfile=/home/user/.ssh/id_rsa是本地机器的用户还是服务器的用户?

一切最初连接良好,但重启后文件夹变空了。

知道如何解决这个问题吗?

PS:我是新手sshfs,我通过教程获得了说明www.digitalocean.com 如何使用 SSHFS 通过 SSH 挂载远程文件系统

答案1

您说的是,但实际上说或server@address会更清楚。当使用等时, 之前的部分是您正在验证的用户。user@serveruser@addressssh@

例如,您可以在中设置以下主机条目~/.ssh/config

Host servername
Hostname 192.168.1.102
User banana

默认情况下,如果您ssh servername,您将以当前本地用户名进行连接。使用此ssh配置,如果您ssh servername,您将以 的身份连接到 192.168.1.102 banana,但即使使用此设置,如果您ssh apple@servername,您也会以 的身份进行连接apple

您的问题因以下事实而更加严重:在 中的挂载fstab由本地系统上的 root 用户运行。这意味着,以普通用户身份进行的所有设置都将无济于事。例如,当您ssh servername第一次登录时,您会接受远程服务器的公钥。这仅以该用户身份发生,如果您sudo su -登录root并以 root 身份运行,您将获得相同的提示。这是首次在 中ssh servername设置时的另一个常见问题。sshfsfstab


公钥中的标识符与身份验证无关。它只是文本,用于在密钥被盗用时帮助您识别远程服务器上的特定密钥。生成密钥时,应使此标识符与使用该密钥的机器相关。这样,如果机器被盗用,您可以从所有服务器中删除此特定密钥,而无需删除其他/所有密钥,从而帮助您保持访问权限而不会失去所有访问权限。

更多细节:SSH 客户端配置


重启后,如果运行mount,您应该会看到所有已安装的驱动器。我猜您不会看到这个,因为目录是空的。只想提一下,与成功安装一个空目录相比。

您的驱动器可能未安装,因为您noautofstab配置不正确,并且x-systemd.automount无法正常工作。

sudo systemctl daemon-reload对 进行更改后,请务必运行fstab

你可以尝试mount /home/user/Documents/folder看看是否能得到具体错误

如果没有出现错误,它已安装,并且您看到了文件,那么很可能就是这种情况。

此外,您有allow_other,但您没有user选择。

驱动器可能已安装,但您无权rx列出文件。这就是useruidgid发挥作用的地方。

user@server /mnt/sshfsshare           fuse.sshfs user,_netdev,noauto,defaults,rw,x-systemd.automount,x-systemd.device-timeout=2s,Compression=no,cache=yes,kernel_cache,reconnect,uid=1000,gid=1000,idmap=user,allow_other,IdentityFile=/home/user/.ssh/id_rsa  0    2

你设置的是identityfile,我总是将其输入为IdentityFile,但我认为大小写无关紧要。这意味着即使 root 运行挂载,它也知道访问你的密钥。你甚至正确地使用/home/user不是 ~/在 IdentityFile 路径中。

唯一可能出现问题的情况是您的密钥文件已加密/受密码保护。在这种情况下,挂载将失败,因为您没有输入密码。

相关内容