我把家里的台式机升级到Fedora 43 ,GNOME49 用起来确实挺舒服,顺手将 Fedora 43 Workstation 作为远程开发机或服务器使用时,遇到一个特别烦的问题,SSH 连着连着突然断了,因系统自动进入休眠(Suspend)而中断。我在 GNOME 图形界面的电源设置中关闭了所有自动挂起选项,系统依然可能在远程操作期间弹出 The system will suspend now! 并强制断开连接。
1. 常规配置(图形界面)
我开始以为在 GNOME 桌面环境的电源管理中配置这样就可以正常解决这个问题但并没有解决,没用
- 打开 Settings (设置) -> Power (电源)。
- Automatic Screen Blank (自动黑屏):设置为 Off (关闭)。
- Automatic Suspend (自动挂起):确保设置为 Off (关闭)。
2. 禁用 systemd 休眠
当 GUI 设置失效时,说明系统底层的 systemd 策略仍处于活跃状态。对于需要保持常开的远程机器,最稳妥的方法是屏蔽(Mask)相关的休眠单元。
2.1 诊断休眠状态
在操作前,你可以运行以下命令查看系统当前的休眠服务状态:
sudo systemctl status sleep.target suspend.target hibernate.target hybrid-sleep.target
2.2 执行屏蔽命令
通过 mask 命令,我们将休眠相关的 Target 指向 /dev/null。这是一种比 disable 更强力的手段,能够防止任何物理按键、系统 API 或 GUI 插件触发休眠。
# 一键禁用所有休眠模式
sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target
执行效果: 系统将完全忽略所有的休眠请求,彻底终结 SSH 远程连接时的中断风险。
2.3 恢复休眠(可选)
如果你在未来需要恢复笔记本的合盖休眠或台式机的节能模式,可以使用以下命令解除屏蔽:
sudo systemctl unmask sleep.target suspend.target hibernate.target hybrid-sleep.target
3. 技术解析:为什么 GUI 设置后依然会断连
在 Fedora 43 (GNOME 49) 中,这种情况通常由以下原因引起:
- 多 Session 竞争: GNOME 的电源设置有时仅对当前的本地会话有效。如果系统停留在 GDM 登录界面,或者系统认为本地处于“无活动”状态,底层
systemd-logind可能会接管电源策略。 - SSH 会话识别: 系统默认可能不将纯远程 SSH 流量识别为“用户活动”,从而触发了全局的空闲休眠逻辑。
追求“Vibe Coding”或需要高可用远程环境的开发者来说,单纯依靠 GNOME 的开关是不够的。“UI 辅助设置 + systemd 强制 Mask” 才是确保 Fedora 43 系统稳如磐石、SSH 永不断线的标准做法。
发表回复