开心一刻
舍长:我的香水不见了!你们快帮着找找啊!
众人:你还用香水??啥牌子的??
舍长:SIX GOD啊,我只用那个。
众人:牛逼啊,没听过啊,啥样子啊?.
舍长:六神花露水,你们谁拿了?
众人。。。
写在前面
最近几天浏览博客时,无意看到了linux中使用vnc实现windows中访问linux的桌面服务,类似于windows中的桌面共享,我就闲来无事研究研究linux桌面共享。待查阅了大量博客以及在虚拟机ubuntu20.10中实验,终于大概弄好了linux桌面共享,且我总共发现了三种linux桌面共享的方式,特地写在这里,供大家参考。在操作之前,建议换一下国内源。
方法一(简单又实用)
ubuntu20.10中已经自带桌面共享的功能,使用的是vino-server实现的,如果虚拟机中安装的ubuntu是桌面版,那么可以尝试按照如下方式打开桌面共享。
1. 首先进入ubuntu桌面,点击Setting -> Sharing -> Screen Sharing
,如下图所示:
3. 关闭远程连接加密请求,否则提示"vnc连接提示不支持安全类型":
# 安装dconf-editor
sudo apt install dconf-editor
4. 进入:org -> gnome -> desktop -> remote access -> require encrytion选择关闭:
但是此方法有个缺点,vino-server不能在console中运行,这也就意味着如果用户不能登录到系统桌面,那么vino-server无法启动,那么也就无法连接到ubuntu的桌面。例如系统重启之后是用ssh远程登录的,那么此时是无法使用vnc viewer登录到桌面的,对于使用ubuntu共享桌面的方式登录系统,如果碰到需要系统重启的问题,就会很令人头大,需要跑到服务器跟前去登录一下桌面才可以。
当然这个问题也是有办法解决的,牺牲一下系统的安全性就可以了。解决方法如下:
- 查看当前用的是什么桌面管理器:
cat /etc/X11/default-display-manager
我的是/usr/sbin/gdm3
,那么编辑文件:
sudo vim /etc/gdm3/custom.conf
把下面的三行注释掉,其中AutomaticLogin行修改成自己的用户名。
WaylandEnable=false
AutomaticLoginEnable = true
AutomaticLogin = user1
重启电脑就可以登录了。这种修改方式使得系统启动时无需输入账号密码即可进入桌面系统。
方法二(安装xrdp服务)
Xrdp 是一个微软远程桌面协议(RDP)的开源实现,它允许你通过图形界面控制远程系统。通过 RDP,你可以登录远程机器,并且创建一个真实的桌面会话,就像你登录本地机器一样。windows系统中默认远程登录用的就是RDP协议,在ubuntu中安装xrdp服务意味着在登录ubuntu远程桌面时可以使用windows的远程桌面软件。安装步骤如下:
一、安装桌面环境
Ubuntu 服务器通常使用命令行进行管理,并且默认没有安装桌面环境。如果你正在运行 Ubuntu 桌面版,忽略这一步。
在 Ubuntu 源仓库有很多桌面环境供你选择。一个选择是安装 Gnome,它是 Ubuntu 20.04 的默认桌面环境。另外一个选项就是安装 xfce。它是快速,稳定,并且轻量的桌面环境,使得它成为远程服务器的理想桌面。
运行下面任何一个命令去安装你选择的桌面环境:
- 安装 Gnome
sudo apt update
sudo apt install ubuntu-desktop
- 安装 Xfce
sudo apt update
sudo apt install xubuntu-desktop
取决于你的系统,下载和安装 GUI 软件包,将会花费一些时间。
二、安装 Xrdp
Xrdp 被包含在默认的 Ubuntu 软件源中。想要安装它,运行:
sudo apt install xrdp
一旦安装完成,Xrdp 服务将会自动启动。你可以输入下面的命令,验证它:
sudo systemctl status xrdp
输出将会像下面这样:
默认情况下,Xrdp 使用/etc/ssl/private/ssl-cert-snakeoil.key,它仅仅对“ssl-cert” 用户组成语可读。所以为了能够登录远程桌面,运行下面的命令,将xrdp
用户添加添加到这个用户组:
sudo useradd xrdp ssl-cert
PS: 我不太明白为什么要执行上述useradd命令,而且执行之后我用自己的普通账户登录仍然无法远程登录,但是使用root账户是可以的,我目前没有解决普通账户无法登陆的问题。
重启 Xrdp 服务,使得修改生效:
sudo systemctl restart xrdp
三、Xrdp 配置
Xrdp 配置文件定位在/etc/xrdp目录。对于基本的 Xrdp 链接,你不需要对配置文件做任何改动。
Xrdp 使用默认的 X Window 桌面环境(Gnome or XFCE)。
主要的配置文件被命名为 xrdp.ini。这个文件被分成不同的段,允许你设置全局配置,例如安全,监听地址,创建不同的 xrdp 登录会话等。
不管什么时候你对配置文件做出修改,你需要重启 Xrdp 服务。
Xrdp 使用startwm.sh文件启动 X 会话。如果你想使用另外一个 X Window 桌面,编辑这个文件。
四、配置防火墙
Xrdp 守护程序在所有的网络接口上监听端口3389。如果你在你的 Ubuntu 服务器上运行一个防火墙,你需要打开 Xrdp 端口。
想要允许从某一个指定的 IP 地址或者 IP 范围访问 Xrdp 服务器,例如192.168.33.0/24,你需要运行下面的命令:
sudo ufw allow from 192.168.33.0/24 to any port 3389
如果你想允许从任何地方访问(由于安全原因,这种方式不鼓励),运行:
sudo ufw allow 3389
想要增加安全,你可以考虑 Xrdp 仅仅监听 localhost,并且创建一个 SSH 隧道,将本地机器的3389端口到远程服务器的同样端口之间的流量加密。
五、连接 Xrdp 服务器
现在你已经设置好你的 Xrdp 服务器,是时候打开你的 Xrdp 客户端并且连接到服务器。
如果你有一台 Windows 电脑,你可以使用默认的 RDP 客户端。在 Windows 搜索栏输入“remote”,并且点击“Remote Desktop Connection”或者使用“win+R”组合键,然后输入mstsc
。这将会打开一个 RDP 客户端。在“计算机”区域输入远程服务器 IP地址,并且点击“连接”。
再登录屏幕,输入你的用户名和密码,点击“OK”。
一旦登录,你将看到默认的 Gnome 或者 Xfce 桌面,它应该像下面这样:
现在你可以从你的本地机器上使用你的键盘和鼠标和远程桌面进行交互了。
方式三(VNCserver)
安装vncserver的步骤如下:
一、安装桌面环境和VNCServer
#更新
apt update
#安装桌面环境
sudo apt install xfce4 xfce4-goodies
#安装vncserver
apt install tightvncserver
#启动vncserver
vncserver
随后按照提示,输入vncserver登录时候的密码并再次输入确认。
从远程登录之后发现桌面一片灰白。看来还需要配置一下vncserver的环境:
二、配置vncserver的参数
#关闭vncserver :1窗口
vncserver -kill :1
#备份原来的配置文件
mv ~/.vnc/xstartup ~/.vnc/xstartup.bak
#编辑新的配置文件
vim ~/.vnc/xstartup
在xstartup文件中更新为如下内容:
#!/bin/bash
xrdb $HOME/.Xresources
gnome-sesseion &
然后设置该文档的权限
chmod u+x ~/.vnc/xstartup
随后重新启动vncserver即可连接图像界面,截图如下:
PS:这种方法不一定能成功,原因我不是很清楚。我猜测不成功的原因是在启动的时候需要执行某些文件,但是用户没有可执行的权限,所以最后执行不成功。
三种远程登录方式比较
vino-server | Xrdp | vnc-server | |
---|---|---|---|
优点 | 系统自带,配置简单 | 配置简单,可用windows自带的远程桌面登录 | 配置简单,但不一定能成功连接远程桌面 |
缺点 | 重启后必须登录个人桌面后才可启动 | root用户登陆不容易出错,普通用户容易出错 | 出错不好解决 |
综合我自己尝试这三种远程桌面登录ubuntu的方式,我觉得使用vino-server最方便,在这个基础上,安装xrdp服务,然后在windows系统中使用自带的远程登录工具时,使用VNC-any的方式登录远程桌面,这样就可以避免下载vnc viewer,使用起来跟windows远程登录方式也无差别。
文中都是我个人的理解,如有错误的地方欢迎下方评论告诉我,我及时更正,大家共同进步