处理 sshfs 安装服务器断开连接的更好方法是什么?

处理 sshfs 安装服务器断开连接的更好方法是什么?

我有几个目录通过挂载sshfs。我有时会与服务器断开连接(我无法配置)。我通常这样挂载目录

sshfs [email protected]:/home/user /mnt/example

当服务器断开连接时,sshfs 子系统不会卸载/释放目录,而是将其锁定为不可访问。键入 时,安装座仍然可见mount。当我打字时

ls /mnt/example

该进程被锁定(也Ctrl没有c帮助)。因此我做

sudo umount -l /mnt/example
# find pid of corresponding process:
ps aux | grep example.com
kill -9 <pid of locked sshfs process>

有更好的方法来处理这个问题吗?明显地sshfs应该做卸载并清理...理想情况下它会自动重新连接。

答案1

您可以使用“重新连接”选项运行 sshfs。我们使用 sshfs 和 PAM/automount 来共享网络中每个工作站的服务器文件。我们使用 -o reconnect 作为 sshfs 的参数,主要是因为我们的用户暂停了他们的计算机,并且在唤醒时 sshfs 不会重新连接(或响应,或任何其他事情)。

例如:

sshfs [email protected]:/home/mvaldez/REMOTE /home/mvaldez/RemoteDocs -o reconnect,idmap=user,password_stdin,dev,suid

请注意,如果远程计算机确实出现故障,sshfs 可能会长时间无响应。

答案2

这可以通过减少超时来解决。将以下内容添加到$HOME/.ssh/config/etc/ssh/ssh_config

ServerAliveInterval 15
ServerAliveCountMax 3

这会导致 45 秒超时。

答案3

我有一台用于存储的服务器,由于我居住的地方空间不足,我将其保存在另一个位置。为了将文件带入我的网络,我使用了树莓派,它使用 sshfs 从服务器挂载文件。

最近,由于断电,我不得不升级到 raspbian jessie,并意识到 sshfs 变得严重不稳定。这些文件夹将被正确安装,但一段时间后我将无法连接到它们,并且如果我想列出安装的内容,树莓派将冻结。

我尝试的是:

  1. 在 fstab 中使用重新连接
  2. 在 .ssh/config 文件中使用了 ServerAliveInterval 和 ServerAliveCountMax 但无济于事。
  3. 我在大多数论坛上读到的其他解决方案。

但没有骰子!直到我修改了fstab文件如下:

sshfs#user@server:/remote/folder /local/mount/dir fuse IdentityFile=sshkeyfile,Port=XXX,uid=1000,gid=1000,allow_other,_netdev,ServerAliveInterval=45,ServerAliveCountMax=2,reconnect,noatime,auto 0 0

它有效!不再出现断线情况!我看起来 sshfs 由于某种原因没有读取 ssh 配置文件,并且从未发送过保持活动信号。

答案4

好吧,我在其他答案中找到了平静,但是我想以简单的方式总结对我有用的方法:

sshfs -o reconnect,ServerAliveInterval=15 remote.srv:/somedir /local/mymount

我没有指定ServerAliveCountMax:它默认为 3。


所以,上面的命令(带有选项reconnect):

  • 将检查连接是否remote.srv有效每15秒一次
  • 如果连续3次检查失败,它将尝试重新连接 sshfs 挂载(ssh-agent推荐)。
  • 如果重新连接失败,尝试通过 sshfs 访问远程数据的进程将收到 I/O 错误,而不是永远挂起。
  • 如果连接remote.srv再次可用,则应自动重新连接。

如果没有reconnectfrom ( -o) 选项,则:

  • sshfs仍然会向等待 I/O 的进程发送错误,但随后会umount正确退出。

相关内容