在终端里远程桌面?这个工具只需要一个 SSH 连接
一、远程服务器上,怎么看到桌面?
我有一台树莓派放在家里,接了一块旧显示器,平时跑一些定时任务。偶尔我想看看它在干嘛,屏幕上显示的是什么,某个程序有没有卡住。但我人不在家。
SSH 能连上去,但只能看命令行。装 VNC 吧,要开 5900 端口,防火墙要配,还要装服务端。装 RDP 吧,Windows 上有,Linux 上还得装 xrdp。装 TeamViewer 吧,又要注册账号又要装客户端。
我就是想看一眼桌面,至于搞这么复杂吗?
后来我试了一个叫 sshdesk 的项目,它解决的就是这个很具体的需求:在终端里通过 SSH 看到远程桌面,不需要 VNC,不需要 RDP,不需要任何额外端口。
二、sshdesk 是什么?
sshdesk 是一个开源工具,MIT 协议,GitHub 上 410 Star。
项目地址:https://github.com/rylena/sshdesk
它的理念可以用项目 slogan 概括:
YOUR DESKTOP // ONE SSH SESSION // ZERO EXTRA PORTS
翻译过来就是:你的桌面,一个 SSH 会话,零个额外端口。
sshdesk 做的事情很直接:你 SSH 到远程机器,桌面直接出现在你的终端里。键盘、鼠标、滚动,所有操作都通过 SSH 通道传输。不需要开 VNC 端口,不需要装 RDP 服务端,不需要浏览器,不需要自定义客户端。

三、它是怎么做到的?
你可能会问:终端里怎么显示图形界面?
答案是终端图形协议。
sshdesk 利用了现代终端支持的图形能力。如果你的终端支持 Kitty graphics 协议(Kitty、Ghostty、WezTerm),它会发送压缩的 PNG 图块,渲染出来的效果是原生的像素级清晰。如果你的终端只支持 ANSI(普通终端、Putty、移动端 SSH 客户端),它会自动降级为颜色块渲染,依然可用。
简单对比:
- Kitty / Ghostty / WezTerm:60 FPS,像素级清晰
- 普通 ANSI 终端:30 FPS,颜色块渲染
- 手机 SSH 客户端:也能用,虽然分辨率低一些
桌面内容不是通过 VNC 或 RDP 传输的,而是通过 SSH 的 PTY(伪终端)通道传输的。键盘事件、鼠标事件、窗口大小调整,全部走同一个 SSH 连接。
四、用起来是什么感觉?
安装
一条命令:
# Linux / macOS
curl -fsSL https://raw.githubusercontent.com/rylena/sshdesk/main/scripts/install.sh | sh
# Windows
& ([scriptblock]::Create((irm 'https://raw.githubusercontent.com/rylena/sshdesk/main/scripts/install.ps1')))
安装脚本会自动检测系统,安装 Python 依赖、配置 OpenSSH、验证图形访问权限。
连接
ssh desktop@your-server
连上去之后,远程桌面直接出现在你的终端里。和平时 SSH 连服务器的体验一样,但多了一个图形界面。
要回到普通命令行终端,按 Ctrl+] Ctrl+] 就行。
支持的系统
| 远程主机 | 图形后端 | 支持状态 |
|---|---|---|
| Linux X11 | FFmpeg/XCB | 完全支持 |
| Linux GNOME Wayland | Mutter + PipeWire | 完全支持 |
| Linux KDE Plasma Wayland | spectacle + ydotoold | 支持 |
| Linux wlroots (Sway, Hyprland) | grim + ydotoold | 支持 |
| macOS | 原生捕获 | 支持 |
| Windows 10/11 | 实验性 | 部分支持 |
任何 SSH 客户端都可以连,Linux、macOS、Windows 上的 OpenSSH、Putty、手机 SSH 客户端都行。
五、不只是看桌面:还能控制
sshdesk 支持完整的交互,不只是”看”:
- 键盘:包括 Ctrl、Alt、Shift、方向键、F1-F12
- 鼠标:移动、左键/右键/中键点击、拖拽、滚轮滚动
- 终端窗口大小改变时,桌面自动适配
Agent 自动化
更实用的是,sshdesk 提供了一套 Agent 命令,可以通过 SSH 远程控制桌面:
# 截图
ssh user@server sshdesk-agent screenshot --max-width 1280 > desktop.png
# 点击
ssh user@server sshdesk-agent click 900 500 --button left
# 输入文字
ssh user@server sshdesk-agent type hello
# 滚动
ssh user@server sshdesk-agent scroll -3 900 500
这意味着 AI Agent 可以通过 SSH 远程操作桌面。结合 Claude Code 这类工具,理论上可以让 AI 远程操控一台机器,只需要一个 SSH 连接,不需要任何额外的远程控制协议。
项目还提供了一个 sshdesk-remote 本地工具,可以把多条命令通过一个持久会话发送,效率更高。配合 tmux,还能做分屏布局,左边是 Agent 终端,右边是远程桌面。
六、安全考虑
sshdesk 的安全模型很简单:谁的 SSH 账号,谁就有桌面的完全控制权。
这和物理控制台一样,能坐到电脑前的人就能操作桌面。sshdesk 不引入新的认证系统,不存密码,不开后门,一切依赖 OpenSSH 的现有认证机制。
几个安全建议:
- 保持一个独立的管理员 SSH 账号,不要只用一个账号
- 不要把你的 sshdesk 账号密码分享给别人,这和分享电脑密码一样
- 如果不需要远程桌面功能,关闭 forced command 配置
- 在 Wayland 上运行时,确保桌面环境的屏幕录制权限正确配置
七、适合谁?
适合你,如果:
- 你经常 SSH 到远程机器,偶尔需要看桌面
- 你不想在远程机器上装 VNC/RDP
- 你的网络环境只能走 SSH 端口
- 你是终端控,希望所有操作都在终端里完成
- 你想让 AI Agent 远程操作桌面
可能不适合你,如果:
- 你需要高质量的图形渲染,终端里的桌面毕竟受限于终端分辨率
- 你需要视频播放或 3D 加速,这不在 sshdesk 的能力范围内
- 你的网络带宽很低,虽然比 VNC 轻量,但还是需要传输图像数据
- 你主要用 Windows 远程桌面,Windows 支持目前还是实验性的
八、写在最后
sshdesk 解决的是一个很具体的小需求:我只想通过 SSH 看一眼远程桌面。
它用了一种很极客的方式实现,把桌面渲染到终端里,利用 SSH 通道传输一切。不需要额外端口,不需要额外软件,不需要额外认证。你已经有 SSH,你就可以远程桌面。
项目还很小(410 Star),但思路很新颖。特别是 Agent 自动化能力,AI 通过 SSH 远程操控桌面,这个方向在 AI Agent 越来越火的今天,值得关注。
如果你也在找一个”最小化”的远程桌面方案,sshdesk 值得一试。
项目信息
- 项目名称:SSHDESK
- GitHub:https://github.com/rylena/sshdesk
- 协议:MIT
- 当前 Star:410+
- 技术栈:Python 3.10+,OpenSSH forced command
- 支持系统:X11 / Wayland(GNOME、KDE、wlroots)/ macOS / Windows(实验性)
- 渲染:Kitty graphics(60 FPS)/ ANSI fallback(30 FPS)
- 演示视频:https://www.youtube.com/watch?v=k9qGXJVsxW0
互动时间:你平时用什么远程桌面方案?VNC、RDP、TeamViewer,还是 SSH?评论区聊聊。
喜欢这款工具?关注「善忘技术夹」全媒体
扫描二维码关注微信公众号与小程序,获取更多高品质开源软件推荐与效率工具测试。