远程使用树莓派桌面

背景

换了路由器之后想让树莓派连接新的wifi,
但命令行方式不熟悉,想用GUI方式.
此时又不想用HDMI硬件连,于是想试试远程桌面

方案

X11 forwarding

的确能够使用一些图形软件,但都是单独打开,不能直接看到桌面.
如果使用类似 startlxde 等命令想启动桌面环境,会有问题

  • 反应比较慢
  • 看到的界面和硬件连接时看到的不一样

vnc

使用的是RFB(remote framebuffer)远程帧缓冲协议.
基于像素的转发,抓屏幕内容传输过来.
它解决的问题有:

  1. 键盘的映射,鼠标的定位
  2. 音频的转发
  3. 图像的压缩

缺点有:

  1. 基于像素,可能会占带宽,延迟高.
  2. 安全方面没有特别的保证

xrdp

rdp是微软开发的,用于连接远程桌面用的协议.
据说基于一些更底层的绘图指令(也就是更省带宽一些).并且强化了安全方面.
xrdp则是开源版本的rdp,可以作为服务端使用.
客户端方面也不存在windows专属的情况linux,android,mac各种平台都有相应软件.

X11 forwarding具体使用

使用 ssh -X pi 连接,在打开图形程序时会提示一些问题.
干脆使用 ssh -Y pi 来连接.
连接后先是正常的字符界面,如果打一些有图形界面的命令,比如 emacs,
则会有一个新的窗口打开.这样的方式看不到运行中的桌面.

xrdp的具体使用

服务端

树莓派上可以使用

1
sudo aptitude install xrdp

来安装,完成后默认开启,可以使用

1
systemctl status xrdp

查看状态
或许需要将当前用户加入到 ssl-cert

1
sudo adduser pi ssl-cert

客户端

我使用的Arch上可以安装 freerdp,然后使用命令开始访问

1
xfreerdp /u:username /v:192.168.1.x /w:1920 /h:1080

如果提示 login failed for display 0, 则可能是密码输错了.
如果没有配置,树莓派会识别一个QWERTY的键盘.
可能ssh发送的是键盘输入后的序列,而xrdp发送的是键盘事件.

remmina 则是一个复杂得多的工具集合体,它提供

  1. 一套操作和管理的界面
  2. 以组来管理远程桌面的方式

而基础的一些功能,比如具体是使用SSH还是VNC还是RDP,需要靠安装其他软件来完成.
如果只是要用rdp,没必要去装remmina.

vnc

vnc的实现很多

  • RealVNC
  • TightVNC
  • UltraVNC
  • TigerVNC
  • LibVNC

给人感觉除了乱还是乱.有时候还是平台独占.
鉴于安全方面的问题,可以使用ssh嵌套一层.
将远程的vnc server做本地转发,然后访问本地的vnc server.

参考

  1. vnc和xrdp哪个好