最近开始学习Linux,在虚拟机中装好系统后,直接在CentOS中操作不太方便,使用过程中需要在虚拟机和Windows进行来回切换,就想到有没有一种可以像Windows远程连接一样,可以方便操作的方法,在网上查了很多资料后,大都推荐使用VNC Server/Client进行,即在CentOS中安装VNC Server,在Windows中安装VNC Client。各项配置完成后以即进行远程连接控制了。
本文将演示如何配置并完成远程连接。Server端为CentOS 7,Client端为Windows 7。
Client端
Client比较简单,只要下载好对应的客户端软件即,本文中使用的是Real VNC Viewer。官网下载地址:https://www.realvnc.com/download/vnc/ ,在下载页面中选中对应的版本即可。如下图所示:
Windows中安装比较简单,根据向导点击安装即可。
Server端
Server端安装配置相对比较复杂,在安装前需要将CentOS连网。
安装VNC Server
- 第一步:打开终端切换到管理员权限,如果已经是管理员身份则跳过这一步,使用的命令如下:
sudo -s
- 第二步:在线安装VNC Server,在终端中输入命令,如下所示:
yum install vnc vnc-server
安装过程如下图所示:
配置VNC Server
- 第一步:复制一份配置文件模板到/etc/systemd/system中,并进行配置。
cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:1.service
- 第二步:使用gedit打开vncserver@:1.service,按照如下进行配置,在本文中将要配置的用户名为admin
gedit /etc/systemd/system/vncserver@:1.service
将
ExecStart=/usr/sbin/runuser -l <USER> -c "/usr/bin/vncserver %i"
PIDFile=/home/<USER>/.vnc/%H%i.pid
替换为:
ExecStart=/usr/sbin/runuser -l admin -c "/usr/bin/vncserver %i"
PIDFile=/home/admin/.vnc/%H%i.pid
主要是将<user>替换成需要添加的用户
- 第三步:重启systemd
systemctl daemon-reload
- 第四步:设置VNC密码,密码要求不少于6位
su admin
sudo vncpasswd
如下图所示:
- 第五步:用下面的命令永久开启服务
sudo systemctl enable vncserver@:1.service
- 第六步:启动服务
sudo systemctl start vncserver@:1.service
- 第七步:配置防火墙让VNC服务正常工作
sudo firewall-cmd --permanent --add-service vnc-server
- 第八步:重启服务
sudo systemctl restart firewalld.service
连接VNC Server
- 第一步:在Windows打开安装的VNC Client客户端,新建连接并添加配置远程连接的服务器各项配置
VNC Server中输入远程服务器的IP地址,注意最后的:1并不表示连接的远程端口,而是VNC连接数的数从多少开始,本例是从1开始。
VNC Server服务自身使用的默认端口号为5900。因于一以服务器会有多个不同的用户连接,所以每个用户都会获得不同的端口。配置文件中的数字会告诉VNC服务器在连接服务器时所运行在5900上的子端口号。在该例里面,第一个连接的用户会运行5901(5900+1)端口上,之后依次增加,即运行的端口为5900+x,其中x为配置文件名vcnserver@:x.service里面的x。
-
第二步:连接配置的远程服务器进行连接, 最终的连接效果如下所示:
如果需要用到更多的用户连接,需要创建配置文件和端口,请到前面配置VNC Server,此时需要创建的文件名需要修改为vncserver@:2.service,并替换配置文件中的用户名和之后 步骤相应的文件夹名和端口号。
常见问题
问题一
如果是非管理员身份登录的用户在切换时,可能会出现如下的报错。admin 不在 sudoers 文件中。此事将被报告。其实并不是所有用户都能够执行sudo,因为有权限的用户都在/etc/sudoers中了。我们只需要打开sudoers添加当前账号即可。切换到root账户,使用如下命令打开文件,并添加账户。
gedit /etc/sudoers
找到如下所示的配置段,添加账号
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
admin ALL=(ALL) ALL
以上使用的是CentOS自带的编辑器gedit
问题二
在上面配置VNC Server启动VNC Server服务有时候不能成功,现将网上的方法整理汇总一下:
- 第一种解决方法:
rm /tmp/.X11-unix/*
- 第二种解决办法:将vncseerver@:1.service中的Type修改为simple
- 第三种解决办法,不断尝试的结果。以上两种方法,对我所碰到的情况都无成效,一直报如下的错误提示:
vncserver@:1.service - Remote desktop service (VNC)
Loaded: loaded (/etc/systemd/system/vncserver@:1.service; enabled; vendor preset: disabled)
Active: failed (Result: exit-code) since 日 2017-04-02 00:18:30 CST; 15s ago
Process: 4146 ExecStart=/usr/sbin/runuser -l admin -c /usr/bin/vncserver %i (code=exited, status=1/FAILURE)
Process: 4139 ExecStartPre=/bin/sh -c /usr/bin/vncserver -kill %i > /dev/null 2>&1 || : (code=exited, status=0/SUCCESS)
为这个问题已经折腾了好久,既然这一行一直报错,何不单独执行这一步了。然后就在终端下面单独执行了如下所示的命令:
/usr/sbin/runuser -l admin -c /usr/bin/vncserver %i
奇怪的事件出现了,竟然成功启动。所以建议在学习的过程中,网上查到的解决都无效时,不妨根据系统提示,大胆尝试,说不定就会意想不到的结果。