共计 6784 个字符,预计需要花费 17 分钟才能阅读完成。
当我们拥有一台 Linux 远程服务器时,有时为了操作方便或一些远程 debug 等需求,需要在远程服务器上安装 GUI(全称:Graphical User Interface,即图形用户界面)。这里以 Ubuntu 18.04.1 LTS 为例,介绍下 GUI 的安装过程以及在安装、登录过程中可能会遇到的一些问题。
桌面环境
GUI 是由 Linux 桌面环境、窗口管理器、菜单、工具包等几个组件构成。不同的桌面环境在设计和功能上会赋予系统不同的外观,Linux 系统有多种的桌面环境,其中最流行的桌面环境是 GNOME 和 KDE Plasma。
GNOME
GNOME 由 GNU 计划的一部分,基于 GTK+ 开发。在经历前两个大版本的快速发展后,目前的大版本是 GNOME 3。在 GNOME 3.38 之后,GNOME 采用了新编号方式,推出 GNOME 40,之后的版本是 GNOME 41。目前 Ubuntu 18.04 LTS、Debian 8 等 Linux 发行版使用 GNOME 3 做为默认桌面环境。
KDE Plasma
KDE Plasma 由 KDE 社区维护,目前最新版是 KDE Plasma 5,基于 Qt 5 开发。目前 openSUSE、Fedora、Kubuntu 等 Linux 发行版使用 KDE Plasma 5 做为默认桌面环境。
相比 GNOME 3 而言,KDE Plasma 5 的界面和 Windows 较像,因此若是不习惯 GNOME3 操作的话,可尝试使用 KDE Plasma 5。
其他如 Xfce、LXDE、Budgie 和基于 GNOME 2 的 MATE 等桌面环境也有不少用户在使用,这里基于篇幅原因,不再赘述。
Ubuntu 桌面环境
Ubuntu 除了提供默认 GNOME 3 的桌面外,还提供了其他几种桌面环境,如下:
桌面环境 | 安装命令 |
---|---|
KDE Plasma 5 | sudo apt install plasma-desktop |
LXDE | sudo apt install lxde |
Budgie | sudo apt install budgie-desktop |
MATE | sudo apt install ubuntu-mate-core |
Xfce | sudo apt install xfce4 |
Ubuntu 提供了几种官方变体,被称为 flavors,flavours 在桌面环境的基础上,又加了各自的定制化设置,如下是几种 flavor 列表:
flavor | 说明 | 安装命令 | 官网网址 |
---|---|---|---|
Ubuntu | 基于 GNOME 3 桌面环境,Ubuntu 18.04 LTS 的默认桌面环境 | sudo apt install ubuntu-desktop |
地址 |
Kubuntu | 基于 Plasma 桌面环境 | sudo apt install kubuntu-desktop |
地址 |
Lubuntu | 基于 LXDE 桌面环境 | sudo apt install lubuntu-desktop |
地址 |
Ubuntu Budgie | 基于 Budgie 桌面环境 | sudo apt install ubuntu-budgie-desktop |
地址 |
Ubuntu Kylin | 类似于 Windows 操作系统,主要是中国用户使用 | sudo apt install ubuntukylin-desktop |
地址 |
Ubuntu MATE | 基于 MATE 桌面环境 | sudo apt install ubuntu-mate-desktop |
地址 |
Ubuntu Studio | Version 20.04.3 基于 Xfce 桌面环境,Version 21.10 基于 Plasma 桌面环境 | sudo apt install ubuntustudio-desktop |
地址 |
Xubuntu | 基于 Xfce 桌面环境 | sudo apt install xubuntu-desktop |
地址 |
安装 GUI
查看系统信息
执行如下命令查看系统信息:
$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=18.04
DISTRIB_CODENAME=bionic
DISTRIB_DESCRIPTION="Ubuntu 18.04.1 LTS"
安装 GNOME 3 桌面环境
执行如下命令,安装 GNOME 3 桌面环境:
sudo apt update && sudo apt upgrade
sudo apt-get install ubuntu-desktop
若还希望美化桌面,可在 GNOME-LOOK 寻找合适的主题进行安装。
安装管理器
GNOME 桌面默认使用 GDM3 作为显示管理器,这里使用更轻量、对资源更友好的 lightdm 管理器:
sudo apt install lightdm libpam-kwallet4 libpam-kwallet5
sudo systemctl start lightdm
sudo systemctl status lightdm
重启机器
reboot 机器:
sudo reboot now
查看桌面环境版本信息
以 Ubuntu 18.04.1 LTS 为例,打开 Settings –> Details –> About,即可看到当前系统的系统信息(包括桌面环境信息):
或直接在终端中输入 gnome-shell --version
查看。
[可选] 安装多桌面环境
上述过程安装了 GNOME 3,如果还想使用其他桌面环境的话,可继续安装。以 KDE Plasma 桌面环境为例,执行下述命令安装 plasma-desktop
:
sudo apt install plasma-desktop konsole
sudo systemctl restart lightdm
然后修改默认桌面环境为 KDE:
sudo update-alternatives --config x-session-manager
There are 2 choices for the alternative x-session-manager (providing /usr/bin/x-session-manager).
Selection Path Priority Status
------------------------------------------------------------
* 0 /usr/bin/gnome-session 50 auto mode
1 /usr/bin/gnome-session 50 manual mode
2 /usr/bin/startkde 40 manual mode
Press <enter> to keep the current choice[*], or type selection number: 2
update-alternatives: using /usr/bin/startkde to provide /usr/bin/x-session-manager (x-session-manager) in manual mode
退出登录后再重新登录即可。
设置远程登录
由于本地机器使用的是 Microsoft Remote Desktop 来登录远程服务器,因此这里选择在远程服务器上安装 Xrdp。Xrdp 是一个微软远程桌面协议(RDP)的开源实现,其允许用户通过图形界面控制远程系统。
安装 xrdp
安装并启动 Xrdp
执行如下命令安装并启动:
sudo apt-get install xrdp
sudo systemctl enable xrdp
sudo systemctl start xrdp
若远程服务器上有端口限制的话,可以修改 /etc/xrdp/xrdp.ini
,将 port = 3389
更改为可用的端口,如 port = 8080
,然后重启 Xrdp 即可,启动后查看状态是否正常:
sudo systemctl status xrdp
● xrdp.service - xrdp daemon
Loaded: loaded (/lib/systemd/system/xrdp.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2021-11-25 15:05:37 CST; 1h 23min ago
Docs: man:xrdp(8)
man:xrdp.ini(5)
Process: 1524 ExecStart=/usr/sbin/xrdp $XRDP_OPTIONS (code=exited, status=0/SUCCESS)
Process: 1504 ExecStartPre=/bin/sh /usr/share/xrdp/socksetup (code=exited, status=0/SUCCESS)
Main PID: 1531 (xrdp)
Tasks: 1 (limit: 4915)
CGroup: /system.slice/xrdp.service
└─1531 /usr/sbin/xrdp
当显示 Active: active (running)
时,即表示正常运行。若需要查看运行日志,通过 sudo journalctl -xu xrdp
查看 log。
将 xrdp
用户添加 ssl-cert
用户组
由于 Xrdp 会读取 ssl-cert-snakeoil.key 信息,因此需要先将 xrdp
用户加入到 ssl-cert
用户组:
sudo adduser xrdp ssl-cert
若未将该用户添加到 ssl-cert
用户组,可能在使用 Microsoft Remote Desktop 登录时会报错:
Cannot read private key file /etc/xrdp/key.pem: Permission denied
配置 ufw
使用 sudo ufw status
查看防火墙状态,若 Status 为 inactive
则此步可跳过;若为 active
,则需执行 sudo ufw allow 3389/tcp
将 xrdp 端口加到白名单。
使用 Microsoft Remote Desktop 登录
配置 Microsoft Remote Desktop 进行登录,填写远程服务器地址和 Xrdp 端口即可,格式为 IP:PORT
的形式:
[可选] 修改密码复杂度
若在使用 passwd
修改密码时一直提示 PASSWORD is too simple:
Changing password for admin.
(current) UNIX password:
New password:
BAD PASSWORD: is too simple
可通过修改密码复杂度规则来解决。编辑 /etc/pam.d/common-password,查看密码复杂度要求:
password requisite pam_cracklib.so retry=3 minlen=17 ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1 difok=3
各参数意思如下:
- retry=3: 失败的重试次数
- minlen=17: 密码最小长度
- ucredit=-1: 包含大写字母的个数。负数表示最少包含多少个大写字母,正数表示最多包含多少个大写字母
- lcredit=-1: 包含小写字母的个数。负数表示最少包含多少个小写字母,正数表示最多包含多少个小写字母
- dcredit=-1: 包含数字的个数。负数表示最少包含多少个数字,正数表示最多包含多少个数字
- ocredit=-1: 包含标点符号的个数。负数表示最少包含多少个标点符号,正数表示最多包含多少个标点符号
- difok=3: 新旧密码最少有多少个字符不同
将上述几个参数调整到合适的值,保存退出,再次修改密码。
报错
User admin from xxx not allowed because not listed in AllowUsers
若使用 ssh admin@xxx
登录时报错 "Permission denied, please try again",查看远程服务器的日志 /var/log/auth.log
,有如下报错:
User admin from xxx not allowed because not listed in AllowUsers
可将 admin
这个用户添加到 AllowUsers
,然后重启 sshd
服务,如下:
echo "AllowUsers admin" >> /etc/ssh/sshd_config
systemctl restart sshd
其他用户同理。
Failed password for admin from xxx
使用 ssh admin@xxx
登录时报错"Permission denied, please try again",查看远程服务器的日志 /var/log/auth.log
,有如下报错:
Nov 25 19:48:42 VMS168434 sshd[12465]: pam_tally2(sshd:auth): user admin (1001) tally 29, deny 5
Nov 25 19:48:44 VMS168434 sshd[12465]: Failed password for admin from xxx port xx ssh2
则说明该用户登录失败的次数太多(达到 29 次了),则执行 /sbin/pam_tally2
查看是否超过配置的 deny 次数,若超过则将该用户记录次数重置为 0:
$ sudo /sbin/pam_tally2
Login Failures Latest failure From
root 1 11/25/21 16:31:00 unknown
admin 29 11/25/21 19:48:42 10.61.143.58
$ sudo /sbin/pam_tally2 --user admin --reset=0
Login Failures Latest failure From
admin 29 11/25/21 19:48:42 10.61.143.58
pam_tally 维护了用户尝试登录机器的次数,其属性在 /etc/pam.d/common-auth
中可以进行调整,以 auth required pam_tally2.so deny=5 onerr=fail unlock_time=1800
为例,其表示当用户连续登录失败的次数达到 deny
(5) 次时,会在 unlock_time
(1800) 秒锁定该用户,拒绝该用户访问本机器。
Authentication is required to create a color managed device
若每次登录时都有如下提示:
则可创建 /etc/polkit-1/localauthority/50-local.d/45-allow-colord.pkla
,写入如下内容:
[Allow Colord all Users]
Identity=unix-user:*
Action=org.freedesktop.color-manager.create-device;org.freedesktop.color-manager.create-profile;org.freedesktop.color-manager.delete-device;org.freedesktop.color-manager.delete-profile;org.freedesktop.color-manager.modify-device;org.freedesktop.color-manager.modify-profile
ResultAny=no
ResultInactive=no
ResultActive=yes
然后执行 sudo systemctl restart polkit.service
即可。
KIOExec: Malformed URL xxx
点击桌面上的 Trash 或其他文件时报错如下:
原因是文件管理器配置异常。按如下步骤修复:
- 打开 "Default Applications":
- 点击 "File Manager",修改为 "Dolphin",点击 "Apply" 和 "OK" 即可:
- 再次点击桌面上的文件即可。
IntelliJ IDEA 无法登录
若远程服务器在内网中时,JetBrains 系统的产品无法联网登录,这里以 IntelliJ IDEA 为例来说下如何登录。
- 设置系统网络代理:
export https_proxy=<proxy-host>:<proxy:port>
- 打开
${
IDEA_HOME},运行
bin/.idea.sh`,点击登录即可
若像下图一样一直无法连接到网络,可检查 IDEA 是否允许使用系统代理:检查 IDEA 的 net.properties 文件(文件位置见下方说明),设置 java.net.useSystemProxies=true
,重启运行 ${IDEA_HOME}/bin/idea.sh
来登录即可。
参考 IDE Can’t Connect to JetBrains Account,
net.properties
文件位置如下:
- Windows:
<IDE_installation_folder>\jbr\conf\net.properties
- MacOS:
<IDE_installation_folder>/Contents/jbr/Contents/Home/conf/net.properties
- Linux:
<IDE_installation_folder>/jbr/conf/net.properties