Mac 远程控制键盘失灵,鼠标正常?一次离奇的 RustDesk / ToDesk 故障排查记录
最近遇到一个比较奇葩的问题:
Mac mini 使用 RustDesk / ToDesk 远程控制时,鼠标可以正常操作,键盘却完全无法输入。更要命的是,Mac 正好停留在锁屏界面,连登录密码都输不了。
折腾了一番后,最终莫名其妙地恢复了。查资料时还发现了另一个可能导致类似现象的原因:macOS 的 Secure Input(安全输入)机制。
这里把两种情况和对应的解决办法整理一下,希望能帮到遇到相同问题的人。
一、故障现象
我的环境:
- 被控设备:Mac mini
- 远程控制软件:RustDesk、ToDesk
- 故障表现:鼠标正常,键盘无法输入
- 特殊情况:Mac 处于锁屏状态,无法输入密码解锁
远程连接本身没有问题,鼠标移动、点击都很正常,但键盘就是没有反应。
这就很尴尬了。
毕竟平时还能打开终端排查,偏偏现在连桌面都进不去。
二、先排查 Secure Input(安全输入)
在 Linux.do 上看到另一位网友分享了类似的经历。
他一开始以为是 Mac 权限出了问题,反复调整权限、重启电脑,甚至换了一套键盘,依然没有解决。
后来发现,向日葵远程控制的键盘输入正常,而其他远程软件存在问题。
经过排查,最终怀疑到了 macOS 的 Secure Input(安全输入)机制。
1. Secure Input 是什么?
Secure Input 是 macOS 提供的一种安全输入机制。
当某个程序启用安全输入时,系统会限制其他进程对键盘输入事件的监听,防止密码等敏感内容被键盘记录程序窃取。
一些可能涉及 Secure Input 的软件包括:
终端工具,例如 Terminal、iTerm2
密码管理器,例如 1Password
需要处理敏感输入的应用程序
某些开发工具或其他启用了安全输入的程序
正常情况下,程序完成敏感输入后应该及时释放 Secure Input。
但如果程序异常退出、状态处理有问题,或者一直保持安全输入状态,就可能导致部分远程控制软件无法正常处理键盘输入。
需要注意,Secure Input 并不意味着系统会彻底禁用所有第三方程序的键盘输入。实际影响取决于应用获取和注入键盘事件的方式。
2. 检查是否存在 Secure Input 占用
打开 Mac 终端,执行:
| |
如果出现类似下面的结果:
| |
就说明可以进一步调查 PID 对应的进程。
使用:
| |
查看具体是什么软件。
需要特别注意:不同 macOS 版本的相关字段可能存在差异,而且出现 Secure Input 字段,也需要结合具体数值判断是否处于启用状态。
3. 解决 Secure Input 占用
定位到具体进程后,可以先正常退出对应软件。
如果软件已经卡死,可以通过活动监视器强制退出,或者使用:
| |
必要时再考虑:
| |
操作之前记得确认 PID 对应的进程,避免误杀其他程序导致数据丢失。
原帖作者最终发现,是一个名为“反重力”的程序占用了 Secure Input。
结束该程序后,使用快捷键:
Control + Command + Q
重新锁定 Mac,等待几秒,再输入密码登录。
登录后再次执行:
| |
确认异常占用已经消失。
之后重新打开 ToDesk 和 RustDesk,键盘恢复正常。
帖子下方还有网友反馈,关闭 1Password 后,远程键盘也恢复了正常。
所以如果遇到类似问题,Secure Input 确实值得优先排查。
三、我的情况更离谱:Mac 卡在锁屏界面
上面的方法有一个前提:
你至少还能进入 Mac 桌面,或者通过 SSH 执行命令。
但我的情况更加尴尬。
Mac mini 已经锁屏,RustDesk 和 ToDesk 都能够正常连接,鼠标也能操作,唯独键盘没有任何反应。
结果就是,连密码都没办法输入。
查找资料后,整理出以下几种可能的解决方案。
方法一:使用 macOS 自带的虚拟键盘
macOS 实际上自带一套类似 Windows 屏幕键盘的辅助功能,叫作:
Accessibility Keyboard(辅助功能键盘)
如果登录界面提供辅助功能入口,可以尝试:
在锁屏或登录界面找到辅助功能图标,通常是一个小人形状的按钮。
用鼠标点击。
找到 Accessibility Keyboard。
启用屏幕键盘。
使用鼠标点击虚拟键盘上的字符输入密码。
这样即便远程键盘失灵,也有机会通过鼠标完成解锁。
不过这个方法有一定限制,相关入口可能需要提前启用,具体显示情况也会因 macOS 版本和登录状态有所不同。
方法二:切换 RustDesk 的键盘输入模式
如果使用 RustDesk,可以尝试切换键盘输入源。
操作步骤:
打开 RustDesk 远程控制窗口。
在上方工具栏找到键盘相关选项。
找到 Input Source(输入源)。
尝试在 Input Source 1 和 Input Source 2 之间切换。
重新点击远程 Mac 的密码框,测试能否输入。
不同版本 RustDesk 的菜单可能有所区别。
某些 macOS 键盘输入故障与 RustDesk 的输入事件处理方式有关,切换输入源有机会绕过问题。
方法三:通过其他远程工具或 SSH 解锁
如果 Mac 提前配置了 SSH 或屏幕共享,可以考虑换一条连接通道。
例如使用:
| |
连接到 Mac,检查 Secure Input 的占用情况,并尝试正常退出相关程序。
也可以使用 macOS 屏幕共享或其他远程控制软件,看看键盘输入是否正常。
原帖作者就发现向日葵能够正常输入,而其他远程软件出现了故障。
这也是一个很有价值的排查思路:同一台 Mac,如果只有部分远程软件不能输入,可以优先调查远程软件的输入机制和 Secure Input 状态。
四、我的最终解决方式:切换了一下用户,居然进去了
前面这些方法,我都没能成功解决。
因为 Mac 已经锁屏,而且登录界面没有看到可用的虚拟键盘入口。
正准备放弃时,突然想到:
我这台 Mac mini 上登录了两个用户。
一个是我的账号,另一个是 IT 的账号。
于是,我用鼠标在锁屏界面点了一下 IT 的账号,准备尝试切换用户。
神奇的事情发生了。
明明那个账号也是有密码的,我都准备去找 IT 要密码了,结果不知道是系统界面卡住了,还是用户会话切换过程中出现了什么异常,画面居然直接回到了我自己账号的桌面。
当时键盘仍然无法输入,但至少已经能进入桌面操作了。
随后我尝试断开并重新连接远程控制软件,反复重连了几次。
结果,键盘突然恢复正常了。
整个过程相当玄学。
目前没能确认到底是什么机制让系统恢复了正常,可能与用户会话切换、远程输入状态重新初始化等因素有关。
也没有证据表明,我遇到的问题一定是 Secure Input 导致的。
总之,这次算是通过切换用户和重新连接远程软件,意外恢复了键盘输入。
五、如何预防下一次被锁在 Mac 外面?
经历这次故障后,我觉得有几项设置非常值得提前做好。
1. 提前启用登录界面的辅助功能键盘
进入:
系统设置 → 锁定屏幕 → 辅助功能选项
如果系统版本提供 Accessibility Keyboard 选项,建议提前启用。
这样即便远程键盘再次失效,还有机会通过鼠标输入密码。
2. 开启 SSH,作为备用维护通道
进入:
系统设置 → 通用 → 共享 → 远程登录
开启远程登录,并限制允许访问的用户。
这样即便远程桌面出了问题,仍可以通过 SSH 检查进程、查看系统日志。
当然,SSH 也要做好网络隔离和身份验证,尽量只通过局域网或 VPN 访问。
3. 保留第二套远程控制方案
如果设备需要长期无人值守,建议提前准备至少两种远程访问方式。
例如:
RustDesk 作为主要远程控制工具。
macOS 屏幕共享或其他远程工具作为备用。
SSH 负责命令行排障。
如果一种工具的键盘事件处理出现异常,另一种工具可能仍然可用。
4. 留意 Secure Input 的异常占用
特别是平时长期运行终端、IDE、密码管理器等软件的 Mac。
如果某天突然发现远程键盘无法使用,可以先执行:
| |
检查相关状态,再结合进程信息逐步定位。
六、总结
| 排查方向 | 建议操作 |
|---|---|
| Secure Input 异常占用 | 使用 ioreg 检查,定位 PID,退出相关程序 |
| RustDesk 输入兼容问题 | 切换 Input Source 1 / 2 |
| 锁屏界面无法输入 | 尝试 macOS 辅助功能键盘 |
| 某个远程软件失效 | 尝试另一种远程连接方式 |
| 用户会话状态异常 | 尝试正常切换用户并重新连接 |
| 无法进入桌面排查 | 提前配置 SSH 作为备用入口 |
我的这次故障最终通过切换用户和多次重连恢复,根因仍然未知。
也欢迎遇到相同问题的朋友分享一下自己的解决方法,尤其是有没有人能解释,为什么切换了一下用户,原本无法进入的桌面就突然出现了。
这次算是给常年远程使用 Mac mini 的自己提了个醒:无人值守设备,一定要提前准备备用控制通道。