前言
最近公司新搞了台阿里云的服务器,boss叫我弄一下带界面的远程。虽然我觉得用不到,但boss交代了,还是要好好干。在网上搜索了一波,最后决定使用GNOME Desktop + VNC实现。记录下成果。
注意
- 本文中所有已
$
开头的为指令 - 本文中所指服务器为阿里云上的CentOS 7.3
- 本人使用的win10
GNOME Desktop
这是什么玩意儿
服务器默认情况下,一般选择的是最小安装,所有操作只能以指令的形式在命令行中操作。GNOME Desktop可以为我们的centos带来图形操作,类似windows的图形操作。这样我们远程的服务器才能带图形界面。
如何安装
安装GNOME Desktop非常简单,只需要在输入一条指令。耗时可能会有些长。
$ yum groupinstall "GNOME Desktop" "Graphical Administration Tools"
安装完成重启即可
如何使用
安装后可以根据需要在图形界面和命令界面之间切换
- 切换到图形界面
$ ln -sf /lib/systemd/system/graphical.target /etc/systemd/system/default.target
- 切换到命令界面
$ ln -sf /lib/systemd/system/multi-user.target /etc/systemd/system/default.target
VNC
这是什么玩意儿
VNC (Virtual Network Console)是虚拟网络控制台的缩写。它 是一款优秀的远程控制工具软件,由著名的 AT&T 的欧洲研究实验室开发的。VNC 是在基于 UNIX和 Linux 操作系统的免费的[开源软件,远程控制能力强大,高效实用,其性能可以和 Windows 中的任何远程控制软件媲美。
上面的内容来自百度百科,VNC由两部分组成,运行在服务器上的vncserver和运行在本地的vncviewer。要使用VNC进行远程操作,需要在服务器和本地都安装相应的程序。
安装vnc server(服务器上)
使用 yum
命令安装 vnc server
$ yum install tigervnc-server -y
配置vnc server
复制默认的配置文件,进行修改。
$ cp /lib/systemd/system/vncserver@.service /etc/systemd/system/
vnc server的配置文件一个用户(centos)对应一个配置文件,这里我们在将他复制一份。
$ cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:1.service
当你的要远程root用户(其他的用户也可以)时,需要这样修改默认配置文件。
- 默认配置文件
[Unit]
Description=Remote desktop service (VNC)
After=syslog.target network.target
[Service]
Type=forking
User=<USER> # 将<user>替换成root
# Clean any existing files in /tmp/.X11-unix environment
ExecStartPre=-/usr/bin/vncserver -kill %i
ExecStart=/usr/bin/vncserver %i
PIDFile=/home/<USER>/.vnc/%H%i.pid # 将<user>替换成root
ExecStop=-/usr/bin/vncserver -kill %i
[Install]
WantedBy=multi-user.target
- 我修改后的样子
[Unit]
Description=Remote desktop service (VNC)
After=syslog.target network.target
[Service]
Type=forking
User=root
# Clean any existing files in /tmp/.X11-unix environment
ExecStartPre=-/usr/bin/vncserver -kill %i
ExecStart=/usr/bin/vncserver %i
PIDFile=/root/.vnc/%H%i.pid
ExecStop=-/usr/bin/vncserver -kill %i
[Install]
WantedBy=multi-user.target
主要修改的是将默认配置文件中的
<user>
修改为用于连接的用户名
username
需要注意的是,当使用root用户时PIDFile
需要这样配置
PIDFile=/root/.vnc/%H%i.pid
防火墙开放例外
vnc server默认监听端口是5900,监听端口规则为590+vnc用户端数字,例如:5901、5902。所以我们需要根据自己的需求在防火墙中开放相应端口。
firewall-cmd --permanent --add-service vnc-server
firewall-cmd --zone=public --add-port=5901/tcp --permanent
firewall-cmd --reload
使用vnc server
- start
$ vncserver :1
- stop
$ vncserver -kill :1
- status
systemctl status vncserver@:1 // 显示vncserver:1进程的状态
vncserver -list // 显示所有终端编号和进程ID
ps aux |grep vnc // 可查看所有终端的详细信息,包括终端编号、进程ID、服务端口号等
设置vnc server开启自启
当然你可能需要,vnc server开机自启,来彻底拜托黑乎乎的命令窗口。
$ systemctl enable vncserver@:1.service
安装vnc viewer(本地)
我使用的是RealVNC进行连接,这网页进入贼慢(使用梯子可能会好点)
远程控制带界面服务器
打开RealVNC,依次点击File > New connection...(Ctrl + N
)
在弹出的Properties面板的General中填写ip和连接名称
如图中所示,Name随意填,VNC Server填ip:n
,ip为服务器ip,后边的:n
与服务器启动的VNC Server有关。启动服务器VNC Serve的指令为:$ vncserver :1
后边的:1
就是我们要填的:n
(n可为1-99,同时需要防火墙开放590n端口),两者保持一致就行。
可以看到画质非常渣,可以再Properties面板的General中修改Picture quality改善画面。
附
- 远程画质需要根据实际情况调节,公司阿里云的服务器最高画质流畅无比,我自己的渣渣服务器就只能开中,还卡的一逼。
- 需要系统显示中文的,需要安装中文语语言包,手动切换首选语言,然后重启服务器的VNC Server服务。