断开连接后仍可继续使用的 SSHFS 挂载

断开连接后仍可继续使用的 SSHFS 挂载

我在用着SSH文件系统从我的笔记本电脑安装到中央服务器。

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

有没有办法让 SSHFS 挂载在长时间断开连接(> 5 分钟)或甚至使用不同的 IP 重新拨入后继续存在?

答案1

使用 -o reconnect,ServerAliveInterval=15,ServerAliveCountMax=3

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

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

无论如何,这ServerAliveCountMax=3是默认值,但为了易读性我喜欢指定它。

答案2

感谢有关 autossh 和 autofs 的提示。

然而,就我的直接目的而言,我发现了一个更简单但记录不太好的解决方案:

sshfs -o reconnect server:/path/to/mount

答案3

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

答案4

我怀疑没有,因为即使你可以将 SSH 客户端配置为不断开连接,服务器也可能配置为在指定的不活动时间后断开连接,并且你无法覆盖这一点。即使你可以,如果你从不恢复连接,服务器将处于挂起状态,随着时间的推移,这可能会导致服务器资源的大量浪费。

我认为,更好的方法是在挂起计算机之前卸载文件系统,然后在计算机再次唤醒时重新挂载它。执行此操作的机制可能取决于您如何挂起计算机 - 我使用 tuxonice 内核,要执行此类操作,我有一个指令,如

Unmount /mnt/sshfs

/etc/hibernate/common.conf

相关内容