Ubuntu20.04 xfce远程桌面
本文主要介绍如何在服务器搭建Ubuntu20.04的xcfe远程桌面开发环境,并进行远程访问,另外包括C++、Golang、docker等环境安装配置。
在服务器搭建Ubuntu20.04 xcfe桌面
创建Ubuntu20.04容器
首先在服务器上创建Ubuntu20.04容器,如果你的服务器没有安装docker,请按照此教程安装。
#有可能你登录服务器的用户需要sudo权限来执行docker命令,请自行添加
docker pull ubuntu:20.04 #拉取Ubuntu20.04镜像
docker network create network-local #创建docker网络network-local
docker run -itd --privileged --name=my-desktop --ulimit memlock=-1:-1 \
--network="network-local" -p 22666:22 -p 5901:5901 \
-v /var/run/docker.sock:/var/run/docker.sock ubuntu:20.04 /bin/bash
# --name 设置Ubuntu容器名
# --ulimit memlock设置不限制容器memlock大小(可选)
# --network 设置容器network
# -p 端口映射,5901用于远程桌面访问
docker exec -it my-desktop /bin/bash #进入容器
创建普通用户
上一步创建的容器只有root用户,需要创建一个普通用户,避免误操作导致安全性问题。
- 安装sudo
apt update && apt install -y sudo
- 创建普通用户
adduser username
- 赋予用户sudo权限
usermod -aG sudo username
- 切换用户
su username
- 设置root密码
sudo passwd root
#按照提示输入两遍密码
- 换源
#更换apt源,可跳过,若访问默认源速度慢可更换国内源
#列出国内常用的源操作指引:
#清华源:https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu/
#中科大源:https://mirrors.ustc.edu.cn/help/ubuntu.html
#网易源:http://mirrors.163.com/.help/ubuntu.html
#阿里源:https://developer.aliyun.com/mirror/ubuntu?spm=a2c6h.13651102.0.0.3e221b11btMe7b
安装配置远程桌面
- 安装xcfe、tigervnc
sudo apt install xfce4 tigervnc-standalone-server
#安装过程中需要输入数字选项等进行配置,按需设置
- 启动dbus service
# xcfe启动需要
sudo service dbus start
- 安装配置SSH服务
sudo apt install -y openssh-server
sudo vim /etc/ssh/sshd_config
#找到 AddressFamily any 修改为:
AddressFamily inet
#保存退出,重启ssh服务
sudo service ssh restart
- 设置VNC密码
vncpasswd
#输入两遍密码以及 n
#此密码后续访问远程桌面需要
- VNC配置文件
vim ~/.vnc/xstartup
将以下内容粘贴到新建的配置文件中
#!/bin/sh
xsetroot -solid grey
startxfce4 &
- 启动vncserver
vncserver -localhost no :1
#停止服务:vncserver -kill :1
#:1表示第一个窗口,其端口号为5901(5900+1)
到此为止,我们已经成功在服务器中搭建并启动好了远程桌面,接下来提供两类访问远程桌面的方法。
连接远程桌面
使用VNC软件远程访问
本地机器下载tigervncviewer,连接运行在远程服务器docker中的桌面环境,连接地址:dockerIP:5901,或者:服务器IP:5901(这里的5901是docker映射的)。
使用SSH X11转发
Ubuntu20.04 SSH server设置
- 设置用户密码
passwd eric
- 重启SSH服务
sudo service ssh restart
SSH客户端(Windows)
推荐使用MobaXterm,自带XServer、Xorg,而且性能很好。如何配置如下:
连接之后,在shell命令中直接启动GUI程序,例如:/usr/bin/xfce4-terminal
SSH客户端(Linux)
直接使用ssh -X
ssh -XC username@serverIP -p 22666
# -C表示开启压缩,在带宽满足的情况下不要开启压缩,仅使用-X即可
# -p 端口使用的是运行在服务器上的Ubuntu容器22端口的映射端口
然后启动GUI:/usr/bin/xfce4-terminal
OK,现在我们已经能够访问远程桌面了。
环境配置(可选)
- 安装docker
sudo apt install -y docker.io docker-compose
#我们启动Ubuntu容器的时候映射了docker sock,使用了服务器的docker服务
设置普通用户直接使用docker命令:
sudo gpasswd -a useradmin docker # useradmin是普通用户示例, 需要替换为自己的用户名
newgrp docker # 更新docker用户组
sudo chmod -R 777 /var/run/docker.sock
- C++及Python等的环境配置(按需)
sudo apt install libsnappy-dev zlib1g-dev libbz2-dev liblz4-dev libzstd-dev libgflags-dev git build-essential autoconf gcc g++ ccache libncurses5-dev byacc cmake lcov libprotobuf-dev protobuf-compiler liblz4-dev libreadline-dev libmysqlcppconn-dev libcurl4-openssl-dev libssl-dev gdb valgrind pip libdw-dev zip unzip curl
- Golang环境配置
wget https://dl.google.com/go/go1.15.linux-amd64.tar.gz
sudo tar -C /usr/local -xvf go1.15.linux-amd64.tar.gz
rm -rf go1.15.linux-amd64.tar.gz
- Node配置
wget https://npm.taobao.org/mirrors/node/v14.19.3/node-v14.19.3-linux-x64.tar.gz
tar -xzvf node-v14.19.3-linux-x64.tar.gz
sudo mv node-v14.19.3-linux-x64 /usr/local/node
rm -rf node-v14.19.3-linux-x64.tar.gz
- 环境变量配置
vim /etc/profile 或者 vim ~/.bashrc
#在合适的位置添加:
export NODE_HOME=/usr/local/node
export GOPATH=/home/username/gowork/
export PATH=$NODE_HOME/bin:$PATH:/usr/local/go/bin
#保存退出,source使其生效
- 安装Yarn
npm install -g yarn
#如果连接超时,可以设置npm为淘宝源:
npm config set registry https://registry.npm.taobao.org
使用方式
完成配置后可以保存一下镜像,避免后续操作失误损坏环境还要重新配置。
- 创建docker network
docker network create network-local
- 创建容器
docker run -itd --privileged --name=my-desktop --ulimit memlock=-1:-1 \
--network="network-local" -p 22666:22 -p 5901:5901 \
-v /var/run/docker.sock:/var/run/docker.sock \
ubuntu-20-04-desktop:3.0 /bin/bash
#ubuntu-20-04-desktop:3.0 是自定义的镜像名和版本号
- 进入容器
docker exec -it my-desktop /bin/bash
- 切换用户
su username
- 启动vncserver
sudo service dbus start
vncserver -localhost no :1
- 启动ssh
sudo service ssh start
- 即可vncviewer或者ssh远程连接
在宽带延迟比较低,而且是win环境推荐使用MobaTerm X11转发;如果宽带延迟稍高且是linux环境,推荐VNC方式
终端优化(可选)
- 安装zsh
sudo apt install zsh
chsh -s /bin/zsh
#将zsh设置成默认shell(不设置的话启动zsh只有直接zsh命令即可)
- 安装oh-my-zsh
#最近发现清华镜像站开始提供ohmyzsh镜像啦!
#使用帮助:https://mirrors.tuna.tsinghua.edu.cn/help/ohmyzsh.git/
- 安装相关插件
#zsh-autosuggestions 命令行命令键入时的历史命令建议
git clone https://gitee.com/renkx/zsh-autosuggestions.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
#zsh-syntax-highlighting 命令行语法高亮插件
git clone https://gitee.com/Annihilater/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
- 安装powerlevel10k主题
git clone https://gitee.com/wangl-cc/powerlevel10k.git $ZSH_CUSTOM/themes/powerlevel10k
- 安装字体
1、下载字体
https://www.nerdfonts.com/font-downloads,我选择的是Hack Nerd Font
2、解压到字体目录
sudo unzip Hack.zip -d /usr/share/fonts/
3、刷新字体缓冲
sudo fc-cache -fv
4、设置terminal字体(需远程桌面访问图形界面)
Edit - Preferences - Appearence - Font - Hack Nerd Font Regular + 13 - Close
5、设置terminal默认编码(需远程桌面访问图形界面)
Edit - Preferences - Advanced - Encoding - Unicode - UTF-8
- 修改配置文件
vim ~/.zshrc
#防止中文乱码
export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8
ZSH_THEME="powerlevel10k/powerlevel10k"
# 配置要使用的插件
plugins=(
git
extract
zsh-autosuggestions
zsh-syntax-highlighting
)
source $ZSH/oh-my-zsh.sh
source $ZSH_CUSTOM/plugins/zsh-autosuggestions/zsh-autosuggestions.zsh
source /etc/profile
Q&A
- ssh -X启动的GUI程序中无法输入中文
解决办法:在ssh启动GUI程序之前,先启动ibus-deamon,命令如下:
然后启动GUI程序就可以使用中文输入法了ibus-daemon --xim &
- 打开终端报错:failed to execute default Terminal Emulator
解决办法:
然后Applications - Settings - Perfered Applications - Utilities - Terminal Emulator选择Xfce Terminal即可,重新打开终端正常执行。sudo apt-get install xfce4-terminal && sudo apt purge gnome-terminal
- 打开浏览器报错:failed to execute default Web Browser
解决办法:
(1)安装火狐浏览器:
(2)依照终端一样的操作,选择firefox浏览器为默认浏览器,chrome、edge不稳定,容易宕机。sudo apt install firefox