通过 SSH 保护 Mac 屏幕共享

重要:在进行此更改之前,请先完成 SSH 设置
此配置会强制 所有 Screen Sharing 连接都使用 SSH,包括来自同一本地网络中设备的连接。

启用后,macOS 将只接受源自 Mac 本机(localhost)的直接 Screen Sharing(VNC)连接。来自其他设备的直接 VNC 连接将因此停止工作,无论它们来自互联网、VPN 还是你的本地网络。

在继续之前,请确保你的 Mac 上已启用 Remote Login,并且 Screens 已配置为使用 Secure Connections,包括 Enable on Local Connections,如下所述。否则,Screens 将无法连接。

macOS 10.12 Sierra 开始,可以将 macOS 配置为让其内置的 Screen Sharing 服务只接受源自 Mac 本机(localhost)的连接。这会阻止其他设备直接连接到 Screen Sharing(VNC)服务,包括同一本地网络中的设备

Screens 仍然可以先与 Mac 建立 SSH 连接,然后通过 SSH 隧道转发 Screen Sharing 连接。因此,SSH 会成为连接到该 Mac 的所有 Screens 连接的必需项,包括本地连接

开始之前

由于在进行此更改后将不再接受直接的 Screen Sharing 连接,必须在你的 Mac 上启用 Remote Login(SSH)

  1. 打开 System Settings
  2. 前往 General > Sharing
  3. 启用 Remote Login
  4. 确保你的 Mac 用户账户被允许访问。

如果安装了 Screens 和 Screens Connect,你还需要按如下所述将其配置为使用安全连接。

配置 Screens

在将 Screen Sharing 限制为本地连接之前,编辑你在 Screens 中保存的连接,并打开 Security 部分。

启用 Secure Connections,并确保 Enable on Local Connections 也已开启。

这一点很重要:一旦 Screen Sharing 被限制为本地连接,Screens 必须使用 SSH,即使你的设备与 Mac 处于同一本地网络中

配置 Screens Connect

如果你使用 Screens Connect,打开其设置,选择 General,并启用 Use Remote Login

这可确保 Screens Connect 将远程连接配置为使用 SSH,而不是直接连接到 Screen Sharing 服务。

将 Screen Sharing 限制为本地连接

在配置好 Remote Login 和上面的 SSH 选项后,在 Mac 上打开 Terminal 并输入:

sudo defaults write /Library/Preferences/com.apple.RemoteManagement.plist VNCOnlyLocalConnections -bool yes

在提示时输入你的 Mac 用户账户密码。

VNCOnlyLocalConnections 设置会指示 macOS Screen Sharing 仅接受来自 localhost 的直接 VNC 连接。

这意味着:

撤销更改

如果你希望 macOS Screen Sharing 再次直接接受网络连接,请打开 Terminal 并输入:

sudo defaults write /Library/Preferences/com.apple.RemoteManagement.plist VNCOnlyLocalConnections -bool no

在再次尝试连接之前,请等待几秒钟,让 macOS 应用此更改。

更改生效后,Screens 又可以直接连接到 Screen Sharing(VNC)服务,包括通过本地网络或 VPN,而无需 SSH 隧道。

如果你不再想使用安全连接,也可以在 Screens 和 Screens Connect 中停用与 SSH 相关的设置。

重要: 一旦 Screen Sharing 被限制为 localhost,Screens 必须对连接到此 Mac 的每一次连接都使用 SSH,即使你的设备与 Mac 处于同一本地网络中,或者 Mac 显示在 Nearby 中也是如此。

如果不启用 Enable on Local Connections,本地连接将会尝试直接连接到 VNC 服务,并会失败。

仍然需要帮助?

给我们发送电子邮件