在现代工作环境中,远程控制已成为提高工作效率和灵活性的重要工具。无论是在家办公、技术支持还是多设备协作,掌握各种远程控制方案都显得尤为重要。本文将详细介绍从同一局域网内的桌面连接到跨网络的远程控制解决方案。
同一局域网的桌面连接解决方案
Mac 控制 Windows
在 MacOS 上控制 Windows 设备是最简单的方案之一。苹果在 App Store 提供了官方的远程桌面客户端。
安装步骤:
- 在 Mac 上打开 App Store
- 搜索 “Windows App”(这是新的名称,旧版本叫 “Microsoft Remote Desktop”)
- 下载并安装应用
连接设置:
- 在 Windows 设备上启用远程桌面功能:
- 打开"设置" → “系统” → “远程桌面”
- 启用"启用远程桌面"
- 在 Mac 上打开 Windows App
- 点击"添加桌面",输入 Windows 设备的 IP 地址
- 输入 Windows 的用户名和密码即可连接
Mac 控制 Mac
MacOS 系统内置了强大的屏幕共享功能,可以通过访达(Finder)直接实现。
设置步骤:
- 在目标 Mac 上开启屏幕共享:
- 打开"系统偏好设置" → “共享”
- 勾选"屏幕共享"
- 设置允许访问的用户
- 在控制端 Mac 上:
- 打开访达(Finder)
- 在侧边栏找到目标 Mac(或按 ⌘+K 手动连接)
- 点击"共享屏幕"按钮
- 输入凭据即可连接
Windows 控制 Mac
虽然使用频率不高,但有时确实需要从 PC 控制 Mac。推荐使用 VNC(Virtual Network Computing)协议。
设置步骤:
- 在 Mac 上启用 VNC:
- 打开"系统偏好设置" → “共享”
- 勾选"屏幕共享"
- 点击"电脑设置",启用"VNC 显示程序可以使用密码控制屏幕"
- 设置 VNC 密码
- 在 Windows 上安装 VNC 客户端(如 RealVNC Viewer)
- 输入 Mac 的 IP 地址和 VNC 密码连接
使用 RustDesk 自建远程桌面控制
考虑到 TeamViewer 曾出现的安全问题,以及向日葵等商业软件在画质和功能上的限制,自建 RustDesk 服务器是一个优秀的替代方案,毕竟我并没有长期使用远程桌面的需求,恰好有闲置的云服务器,那就好好利用一下。
云主机端部署
安装脚本:
wget https://raw.githubusercontent.com/techahold/rustdeskinstall/master/install.sh
chmod +x install.sh
./install.sh
重要的安全组设置:
RustDesk 使用的端口范围在 21110-21120 之间,必须在云服务器的安全组中开放这些端口:
- 登录云服务器控制台
- 找到安全组设置
- 添加入站规则:
- 端口范围:21110-21120
- 协议:TCP 和 UDP(两者都必须添加)
- 来源:根据需要设置(建议限制 IP 范围以提高安全性)
获取 Public Key:
安装完成后,屏幕会显示一个 public key,务必保存好这个密钥,客户端连接时需要使用。如果错过了屏幕显示,可以在日志文件中找到:
cat /var/log/rustdesk/signalserver.log
客户端配置
PC/Android 客户端:
- 访问 https://github.com/rustdesk/rustdesk/releases 下载对应平台的客户端
- 安装后在设置中配置自建服务器地址和 public key
iOS 客户端:
- 直接在 App Store 搜索 “RustDesk” 下载
- 同样需要配置服务器信息
连接步骤:
- 打开 RustDesk 客户端
- 在设置中输入自建服务器的 IP 地址
- 输入保存的 public key
- 获取目标设备的 ID 和密码即可连接
更常用的 SSH 终端远程控制
对于开发人员来说,SSH 连接往往比图形界面远程控制更加高效和实用。
本地 SSH 连接
Mac 系统对 SSH 支持完善,可以直接使用终端:
ssh username@target_ip
结合 VS Code Remote 开发
现代开发工作流中,很少直接在 Windows 上进行开发,更多是使用 VS Code 的 Remote 功能连接 Linux 进行开发:
- 安装 VS Code 的 “Remote - SSH” 扩展
- 按 F1 打开命令面板,输入 “Remote-SSH: Connect to Host”
- 输入 SSH 连接信息即可在远程环境中开发
使用 FRP 实现内网穿透
当需要访问位于 NAT 后面的设备时,可以使用 FRP(Fast Reverse Proxy)服务。
云主机端配置(frps):
- 下载 FRP:
wget https://github.com/fatedier/frp/releases/download/v0.52.3/frp_0.52.3_linux_amd64.tar.gz
tar -xzf frp_0.52.3_linux_amd64.tar.gz
cd frp_0.52.3_linux_amd64
- 编辑 frps.ini:
[common]
bind_port = 7000
token = your_secure_token
- 启动服务:
./frps -c frps.ini
本地 Ubuntu 客户端配置(frpc):
- 下载并解压 FRP 客户端
- 编辑 frpc.ini:
[common]
server_addr = your_server_ip
server_port = 7000
token = your_secure_token
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 2222
- 使用 systemd 创建服务:
sudo vim /etc/systemd/system/frpc.service
内容如下:
[Unit]
Description=FRP Client
After=network.target
[Service]
Type=simple
User=root
ExecStart=/path/to/frpc -c /path/to/frpc.ini
Restart=on-failure
RestartSec=5s
[Install]
WantedBy=multi-user.target
- 启用并启动服务:
sudo systemctl enable frpc
sudo systemctl start frpc
这样配置后,就可以通过云主机的 2222 端口 SSH 连接到内网的 Ubuntu 设备了:
ssh -p 2222 username@your_server_ip
总结
不同的远程控制方案适用于不同的场景:
- 局域网内:优先使用系统内置方案,简单可靠
- 跨网络图形界面:推荐自建 RustDesk,安全性和性能都有保障
- 开发工作:SSH + VS Code Remote 是最佳组合
- 内网穿透:FRP 提供了稳定的解决方案
选择合适的远程控制方案,可以大大提高工作效率和灵活性。在实际使用中,建议根据具体需求组合使用多种方案,以获得最佳的远程控制体验。