Ubuntu 设置远程桌面(VNC)
连接 Xfce 4 远程桌面
下载 Xfce 4 桌面环境:
sudo apt install -y xfce4 xfce4-goodies
这里会提示你设置显示管理器,我们设置
gdm3就好。安装 TightVNC 服务器
sudo apt install -y tightvncserver
接下来,运行
vncserver命令设置 VNC 访问密码,创建初始配置文件,并启动 VNC 服务器实例:vncserver
系统将提示你设置密码,这里需要填入一个长度小于 8 位的密码,多余的位数会被截去。之后你要再输入一遍相同的密码以确认密码。接下来系统会提示你是否要设置提供仅查看功能的密码,一般我们不需要这个功能,所以这里填
n。启动 VNC 服务器时注意命令的输出提示。如果提示像下面这样,表示 1 号 VNC 服务器实例已被占用,创建了 2 号 VNC 服务器实例:
Warning: inspiron-3468:1 is taken because of /tmp/.X1-lock
Remove this file if there is no X server inspiron-3468:1 New 'X' desktop is inspiron-3468:2 Starting applications specified in /home/xiao/.vnc/xstartup
Log file is /home/xiao/.vnc/inspiron-3468:2.log
此时我们已经设置好了密码。关闭 VNC 服务器实例:
vncserver -kill :2 # 刚刚创建了几号实例就关闭几号实例
接下来我们要修改
xstartup文件。~/.vnc/xstartup文件用于配置通过 VNC 连接启动的远程桌面环境或窗口管理器,在 VNC 服务器启动会话时被执行。mv ~/.vnc/xstartup{,.bak} # 先备份原文件
vim ~/.vnc/xstartup # 创建新文件
填入以下配置:
#!/bin/bash
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources # 加载用户的 .Xresources 配置文件到 X 资源数据库中
startxfce4 & # 启动 XFCE 桌面环境(后台执行)
为文件添加执行权限:
chmod 755 ~/.vnc/xstartup
启动 VNC 服务器实例:
vncserver -localhost
由于 VNC 不具有加密功能,因此在公网上直接和 VNC 服务器通信并不安全。我们接下来将建立一个 SSH 隧道,通过隧道我们和 VNC 服务器连接。这种策略将为 VNC 增加一层额外的安全性,因为唯一能够访问它的用户是那些已经具有 SSH 访问权限的用户。
建立 SSH 隧道
ssh USER@HOST -L 5901:localhost:5901 -CNf # 注意改端口号,端口号应为 5900 + 实例号
-L 59000:localhost:5901: -L 选项指定本地计算机端口5901被转发到目标服务器的localhost:5901。-C:此标志启用压缩,有助于减少资源消耗并加快速度。-N: 此选项告诉 SSH 你不希望执行任何远程命令。当您只想转发端口时,此设置很有用。-f: 此选项表示将 SSH 连接放到后台。避免长时间不用 SSH 连接时终端失去响应。
使用 VNC 客户端进行连接
如果你使用 macOS,可以使用系统自带的屏幕共享应用来连接:打开 Spotlight,搜索并打开
Sharing.app。之后新建一个连接,连接地址填写vnc://localhost:5901(注意改端口号为实际端口号)
如果一切正常,你就能看到 Xfce 的远程桌面了。

设置开机自启
创建 systemd 服务文件:
sudo vim /etc/systemd/system/vncserver@.service
在名称末尾的
@符号将允许我们传入一个参数,你可以在服务配置中使用。你将使用此参数来指定在管理服务时要使用的 VNC 显示端口。将以下行添加到文件中。确保更改
User、Group、WorkingDirectory的值,并将PIDFILE值中的用户名更改你的用户名:[Unit]
Description=Start TightVNC server at startup
After=syslog.target network.target [Service]
Type=forking
User=<USER>
Group=<GROUP>
WorkingDirectory=/home/<USER> PIDFile=/home/<USER>/.vnc/%H:%i.pid
ExecStartPre=-/usr/bin/vncserver -kill :%i > /dev/null 2>&1
ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800 -localhost :%i
ExecStop=/usr/bin/vncserver -kill :%i [Install]
WantedBy=multi-user.target
重启 systemd 守护进程
sudo systemctl daemon-reload
启用服务文件
sudo systemctl enable vncserver@1.service
这里的
1表示服务应该出现在哪个显示编号上,这里为:1。现在,每次启动系统时,都会自动启动一个编号为
:1的 VNC 服务器实例。建立 SSH 隧道
在每次连接 VNC 服务之前,你都需要确保已经建立了 SSH 隧道:
ssh USER@HOST -L 59000:localhost:5901 -CNf
Troubleshooting
灰屏问题

检查
~/.vnc/xstartup配置文件的内容是否正确,以及文件是否有执行权限。使用
ps -a命令检查gnome-session-b进程是否在运行:$ ps -a | grep gnome-session-b
9521 tty2 00:00:00 gnome-session-b
发现
gnome-session-b进程在运行,此时无法启动 Xfce 桌面环境。注意我们必须通过 SSH 远程连接到服务器上进行接下来的操作,不能在主机的桌面环境下操作。关闭 gnome-session-b:
kill $(ps -a | grep gnome-session-b | awk '{print $1}')
然后重启 VNC 服务器:
vncserver -kill :2 # 记得替换为你实际的实例号
vncserver
此时再次尝试连接,应该就能看到桌面了。
参考:How to Install and Configure VNC on Ubuntu 22.04 | DigitalOcean
个人认为 RDP 更好用一点
Ubuntu 设置远程桌面(VNC)的更多相关文章
- 如何在 Linux 上使用 x2go 设置远程桌面
https://linux.cn/article-5708-1.html 由于一切都迁移到了云上,作为提高职员生产力的一种方式,虚拟远程桌面在工业中越来越流行.尤其对于那些需要在多个地方和设备之间不停 ...
- vncserver和Ubuntu Xfce4远程桌面环境的配置,解决不显示图形界面
vncserver和Ubuntu Xfce4远程桌面环境的配置 参考的http://blog.163.com/thinki_cao/blog/static/8394487520130301453180 ...
- Windows Server 2008设置远程桌面连接的最大数量
远程桌面连接的默认数量是2,当有多个用户需要同时远程桌面连接时很不方便,可以设置远程桌面连接的最大数量. 1. 运行gpedit.msc: 2. 选择计算机配置-->管理模板-->Wind ...
- windows防火墙实验-命令行设置远程桌面连接以及禁止浏览器上网
windows防火墙实验-设置远程桌面连接以及禁止浏览器上网 实验环境: 1.win2008远程桌面服务 2.win7-1 10.10.10.136 3.win7-2 10.10.10.153 实验步 ...
- Ubuntu设置显示桌面快捷键
Ubuntu设置显示桌面快捷键 直接在系统设置中没有效果, 学习了:http://www.cnblogs.com/pluse/p/5286585.html 需要进行安装compizconfig,然后在 ...
- Centos7远程桌面 vnc/vnc-server的设置
Centos7与Centos6.x有了很大的不同. 为了给一台服务器装上远程桌面,走了不少弯路.写这篇博文,纯粹为了记录,以后如果遇到相同问题,可以追溯. 1.假定你的系统没有安装vnc的任何软件,那 ...
- 如何添加并设置远程桌面(RD)授权服务器
上一篇日志中介绍了如何将现成的远程桌面授权服务器添加到对应的远程桌面回话主机中. 本篇日志将引导您如何添加配置相应的远程桌面授权服务器,这样就可以根据所购买的授权类型和授权级别添加需要甚至" ...
- win10如和设置远程桌面
最近几天一直在搞远程桌面问题,电脑一直连不上远程,今天终于出来了. 前提前提 条件,要电脑允许Administrator用户,先把电脑切换到那个用户,然后进行下面操作. 1.在桌面,我的电脑图标,鼠 ...
- ubuntu 的远程桌面
好久没有弄ubuntu 丢人的啊,先安装了个服务器版,发现好多命令都忘记了,命令行下根本搞不懂 又安装了个桌面版...但是服务器远程么,putty还是搞的头大,又乱码,有各种文件传输. 还好记得以前用 ...
- 3、树莓派的配置:改静态IP、连接ssh、安装中文字体、安装谷歌输入法、增加USB电流、修改触摸屏分辨率、扩展sd卡空间、修复vi和vim乱码问题、安装配置远程桌面vnc
本博文仅作本人操作过程的记录,留作备忘.自强不息 QQ1222698 1.连接上HDMI线,插上触摸屏,插上键盘,鼠标,网线,启动.系统正常启动,但是一直闪烁,不停的黑屏,是由于触摸屏的usb口供电不 ...
随机推荐
- 详解Web应用安全系列(5)敏感数据泄露漏洞
在最近几年,这是最常见的,最具影响力的攻击.这个领域最常见的漏洞是不对敏感数据进行加密.在数据加密过程中,常见的问题是不安全的密钥生成和管理以及使用弱密码算法,弱协议和弱密码.特别是使用弱的哈希算法来 ...
- Unicode 和JS中的字符串
计算机内部使用二进制存储数据,只认识0和1两个数字,计算机的世界只有0和1.但我们的世界却充满着文字,如a, b, c.怎样才能让计算机显示文字,供我们使用和交流?只能先把文字转化成数字进行存储,然后 ...
- 重磅来袭!MoneyPrinterPlus一键发布短视频到视频号,抖音,快手,小红书上线了
MoneyPrinterPlus开源有一段时间了,已经实现了批量短视频混剪,一键生成短视频等功能. 有些小伙伴说了,我批量生成的短视频能不能一键上传到视频号,抖音,快手,小红书这些视频平台呢?答案是必 ...
- SqlParameter,参数化查询问题
SqlParameter p = new SqlParameter("@pageIndex", (object)pageIndex); SqlParameter带有两个参数的构造函 ...
- 解决方案 | 使用python中的os模块准确获取不带后缀的文件名和扩展名
1. 问题 如何使用python获取不带后缀的文件名? 2. 解决方法 如下图 import os file_name = "examp.le.pdf" file_name1_wi ...
- webpack4.15.1 学习笔记(三) — 模块热替换HMR
目录 模块热替换 HMR HMR监听文件变化 HMR 修改样式表 模块热替换 HMR 允许在运行时更新各种模块,而无需进行完全刷新.不适用于生产环境,意味着应当只在开发环境使用.启用HMR实际上就是更 ...
- oeasy教您玩转vim - 48 - # ed由来
范围控制 回忆上节课内容 我们这次研究了mark的定义和使用 mb定义 'b跳转 可以对marks,查询删除 三种marks 小写 本文件内 大写 跨文件 数字 配置文件中 甚至可以在行编辑中,使 ...
- 制作KubeVirt镜像
目录 制作KubeVirt镜像 1. 准备磁盘文件 2. 编写Dockerfile 3. 构建镜像 4. 上传镜像到仓库(可选) 5. 导出镜像 6. 虚拟机yaml文件 7. 启动虚拟机 8. 启动 ...
- mybatis:映射方式与SQL注入
1.映射方式有两种,一种是resultType 这个是有一个实体类其成员与数据库中表字段一一对应,下例中就是User类对应了user表 <mapper namespace="com.e ...
- httpclient,轻量级idea集成测试工具
优点:不用新开一个网页,具有测试数据保存功能,不需要配置即用(对比swagger) 不会特别占内存(对比postman) 使用方法:idea中安装插件 controller方法中点击 选择对应 ...