Ubuntu22.04 安装配置VNC Server
如果转载, 请注明出处 https://www.cnblogs.com/milton/p/16730512.html
Ubuntu22.04下VNC和远程桌面的区别
这里介绍的是Ubuntu22.04 Desktop版安装配置VNC, 如果是Ubuntu22.04 Server, 因为自身不带桌面环境安装的问题会少一些
- 使用远程桌面时, 用户必须在host上登入桌面环境. 可以是锁屏或非锁屏, 但是必须要有一个用户桌面会话存在, 如果用户logout了, 远程桌面就无法连接了
- 使用VNC时, host上需要启动vncserver. 但是vncserver与用户在host上的桌面会话是不一样的, vncserver会给连接后的用户启动桌面会话
启动vncserver失败的问题
在Ubuntu22.04下, 用户在启动vncserver之前必须退出所有桌面会话, 否则会报错.
安装步骤
安装并启用 SSH 服务
如果host上还没有ssh服务, 安装一下, 方便后面的安装步骤, 远程通过ssh进行. 如果不安装, 本机关闭桌面在命令行下也可以, 就是调试起来不方便
sudo apt install openssh-server
sudo systemctl status ssh.service
# 确认是否开机自启动
sudo systemctl is-enabled ssh.service
初始安装
(可选)安装XFCE桌面. 如果想使用自带的 Ubuntu桌面, 也可以不安装
sudo apt install xfce4 xfce4-goodies
安装vncserver
sudo apt install tigervnc-standalone-server
上面的安装完之后, 用普通用户在ssh连接(或者命令行终端)中启动一次
vncserver
过程中会让你设置密码和只读密码, 会自动分配端口号. 查看启动后的实例
$ vncserver -list
TigerVNC server sessions:
X DISPLAY # RFB PORT # RFB UNIX PATH PROCESS ID # SERVER
2 5902 11368 Xtigervnc
如果-list看不到实例, 说明启动失败, 需要journalctl -fe看一下具体原因
如果事后想再修改密码, 可以用vncpasswd命令
上面启动的服务, 默认是只监听本地127.0.0.1, 所以从其它机器是无法连接的, 如果需要连接, 可以用这个命令启动
vncserver -localhost no
配置和添加到系统服务
关闭刚才的实例, :2根据自己的实例修改
vncserver -kill :2
将 tigervncservice 服务添加到启动, :2根据自己的实例修改
sudo systemctl start tigervncserver@:2.service
sudo systemctl enable tigervncserver@:2.service
服务配置文件在 /lib/systemd/system/tigervncserver@.service , 因为服务使用的是 /usr/libexec/tigervncsession-start 这个脚本, 脚本里面调用的是 /usr/sbin/tigervncsession , 参考 https://manpages.ubuntu.com/manpages/impish/man8/tigervncsession.8.html, 需要在 ~/.vnc/ 下创建文件 config, 输入内容
session=xfce
geometry=1366x768
securitytypes=vncauth,tlsvnc
session=xfce如果前面安装了xfce, 这里可以用xfce, 否则需要改成ubuntu(Desktop版自带桌面)- 能用哪些值, 取决于 /usr/share/xsessions 目录下包含哪些 desktop. 例如使用自带的 Ubuntu桌面, 可以改成
session=ubuntu
- 能用哪些值, 取决于 /usr/share/xsessions 目录下包含哪些 desktop. 例如使用自带的 Ubuntu桌面, 可以改成
- geometry=1366x768 是开启时的默认分辨率
- 如果要只允许本地连接, 可以加一行
localhost
修改完重启服务生效
sudo systemctl restart tigervncserver@:2.service
VNC客户端
Win10
TigerVNC
- 项目地址: https://github.com/TigerVNC/tigervnc/
- 下载地址: https://sourceforge.net/projects/tigervnc/files/stable/1.12.0/
如果使用Win10 64bit, 下载其中的vncviewer64-x.xx.x.exe, 不需要安装, 直接运行, 地址填host地址加vnc编号, 例如 112.12.12.12:2, 或者112.12.12.12:5902也可以
Ubuntu
Vinagre
Ubuntu Desktop 自带支持VNC的远程桌面客户端 Vinagre, 选择协议VNC, 输入服务端地址 例如 112.12.12.12:2 就可以连接. 但是Vingare的功能比较简陋
Remmina
Remmina 的用户体验比 Vingare 要好一点, 官网 https://remmina.org/, Ubuntu22.04自带的版本比较低(1.4.29), 可以通过ppa安装更高版本的1.4.35
sudo apt-add-repository ppa:remmina-ppa-team/remmina-next
sudo apt update
sudo apt install remmina remmina-plugin-rdp remmina-plugin-secret
如果运行过Rammina, 安装完后需要终止还在运行的旧进程
sudo killall remmina
如何在 Remmina 中调整桌面分辨率?
在 Windows 下通过 TigerVNC 连接后, 调整窗口大小时, 会自动调整桌面分辨率, 但是 Remmina 连接 VNC 桌面后 "Toggle dynamic resolution update" 图标是灰的, 查了一下没有找到解决的方法, 只能通过手动设置. 先将窗口调整到你需要的大小(可以全屏), 然后在VNC桌面中使用命令行查看可用的分辨率列表, 以及当前VNC使用的分辨率
milton@b85m2:~$ xrandr
Screen 0: minimum 32 x 32, current 1680 x 1050, maximum 32768 x 32768
VNC-0 connected primary 1680x1050+0+0 0mm x 0mm
1680x1050 60.00*+
1920x1200 60.00
1920x1080 60.00
...
640x480 60.00
再通过xrandr -s 1920x1080指定新分辨率即可, 如果此时窗口分辨率小于你指定的分辨率, 设置会失败.
连接安全
上面的配置, 仅适合在内网使用, 因为连接是不加密的. 如果需要加密, 一般将vnc服务启动为监听本地, 再使用ssh建立隧道对外提供服务. 具体可以参考下面的链接
遇到的问题
启动服务产生错误 No user configured for display :2
如果遇到这类错误
tigervncsession-start[6996]: No user configured for display :3
查看一下 tigervncserver 服务中的提示
more /lib/systemd/system/tigervncserver@.service
# The tigervncserver service unit file
#
# Quick HowTo:
# 1. Add a user mapping to /etc/tigervnc/vncserver.users.
# 2. Adjust the global or user configuration. See the
# tigervncsession(8) manpage for details. (OPTIONAL)
# 3. Run `systemctl enable tigervncserver@:<display>.service`
# 4. Run `systemctl start tigervncserver@:<display>.service`
#
是否未在 /etc/tigervnc/vncserver.users 中添加对应用户?
开启VNC服务后本机无法登入桌面
上面配置完之后, 如果在host上想直接登录桌面, 界面会卡住失去响应很长时间, 然后再次回到登录界面. 猜测是因为VNC启动的桌面与Ubuntu系统桌面冲突引起的. 如果想在host上操作, 可以按Ctrl+Alt+(F1~F6)进入命令行进行操作
XFCE桌面无法挂载移动硬盘
在XFCE桌面下, 如果host插上移动硬盘, 要挂载时会提示Not Authorized, "not authorized to perform operation". 在Ubuntu桌面下, 同样的操作会弹出授权对话框让输入口令, 输入之后可以挂载. 猜测是XFCE界面适配上的bug, 未处理需要授权的情况.
浙公网安备 33010602011771号