善忘技术夹 Logo
善忘技术夹
善用佳软 开源

在终端里远程桌面?这个工具只需要一个 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 终端远程桌面演示

三、它是怎么做到的?

你可能会问:终端里怎么显示图形界面?

答案是终端图形协议。

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 X11FFmpeg/XCB完全支持
Linux GNOME WaylandMutter + PipeWire完全支持
Linux KDE Plasma Waylandspectacle + 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 值得一试。


项目信息


互动时间:你平时用什么远程桌面方案?VNC、RDP、TeamViewer,还是 SSH?评论区聊聊。

喜欢这款工具?关注「善忘技术夹」全媒体

扫描二维码关注微信公众号与小程序,获取更多高品质开源软件推荐与效率工具测试。

善忘技术夹 微信公众号宣传图
微信公众号 (扫码关注)
善忘技术夹 微信小程序宣传图
微信小程序 (扫码即用)