SSHFS 挂载在断开连接后仍然存在

ben*_*ene 75 networking linux ssh fuse

我正在使用SSHFS挂载从我的笔记本电脑到中央服务器。

显然,SSHFS 挂载在较长时间断开连接后(例如在挂起期间)被破坏,导致底层 SSH 连接超时。

有没有办法让 SSHFS 挂载在长期断开连接(> 5 分钟)甚至使用不同 IP 重新拨号的情况下幸存下来?

kub*_*zyk 89

-o reconnect,ServerAliveInterval=15,ServerAliveCountMax=3

这种组合ServerAliveInterval=15,ServerAliveCountMax=3会导致 I/O 错误在网络中断一分钟后弹出。这很重要,但在很大程度上没有记录。如果ServerAliveInterval选项保留为默认值(因此没有活动检查),遇到 I/O 挂起的进程似乎会无限期地休眠,即使在 sshfs 被reconnect'ed 之后。我认为这是一种无用的行为。

换句话说,-o reconnect如果没有分配ServerAliveInterval,任何 I/O 要么成功,要么无限期挂起应用程序,如果 ssh 在下面重新连接。结果,典型的应用程序变得完全挂起。如果您希望允许 I/O 返回错误并恢复应用程序,则需要ServerAliveInterval=1或更高。

ServerAliveCountMax=3无论如何,这是默认值,但我喜欢指定它以提高可读性。


ben*_*ene 58

感谢 autossh 和 autofs 的提示。

但是,出于我的直接目的,我找到了一个更简单的解决方案,但没有很好地记录:

sshfs -o reconnect server:/path/to/mount
Run Code Online (Sandbox Code Playgroud)


小智 12

当 Autossh注意到 ssh 已终止或停止传递流量时,它会自动重新连接 ssh 会话。由于它只是自动 ssh,因此它可以在不同的 IP 和挂起状态下工作(即使笔记本电脑在不同的局域网上唤醒)。

  • @MartinUeding 我查找了 Mosh,但是 a) 不适用于 sshfs b) 看来您还需要在服务器上安装它,这使得它不太吸引人,IMO。 (2认同)

Zor*_*che 9

您可以做的一件事是通过autofs挂载文件系统。Autofs 是一个工具,当您使用文件系统将挂载到的目录中的某些内容时,它将挂载文件系统。当它检测到活动时,文件系统就被挂载了。当文件系统上没有发生任何事情时,它会被卸载。

这是一个HOWTO我在谷歌发现做到这一点,那里有几个人。