Linux桌面环境通过VNC远程Linux服务器
linux桌面环境通过VNC远程Linux服务器
现在有的开发者小伙伴的开发环境是linux系统的,如ubuntu、deepin、centost等,很多情况下都需要远程到一些服务器上进行操作。我们知道如果linux要远程windows可以用rdesktop命令,简单又方便,远程linux服务器,如果那么最常见的就是通过ssh的方式了。但是有很多开发者,还是希望可以在图形化界面来操作。远程的方式有很多,而今天我们就来看看如何通过在ubuntu上使用vnc客户端远程到centos服务器。其他类unix系统的做法也与此类似。
1.VNC服务端
1.1.在linux服务器上安装桌面环境
这一点很重要,如果linux服务器都没有安装桌面环境,那谈何图形化界面操作。一般,在安装centos或RHEL时都有得选择安装GUI,其他的发行版的服务器可能就是没有得选择,直接就是只有命令行来操作。如果服务器上没有桌面环境,可以参考《RHEL或CentOS安装GNOME》。文章虽然是针对centos和RHEL,其实都只是安装的命令不一样,过程还是一样的。最后,就是要保证linux开机后的运行级别是5(图形化界面)。
1.2.在CentOS上安装VNC Server
1.2.1.第一步:查看是否装过vnc
~# rpm -q tigervnc tigervnc-server
1.2.2.第二步:安装VNC Server
如果上一步,显示没有安装VNC Server就执行以下命令安装:
~# yum install tigervnc-server -y
1.2.3.为vnc账号创建vncserver服务单元文件
首先把这个模板文件/lib/systemd/system/aaa@qq.com拷贝到/etc/systemd/system目录下,并命令为aaa@qq.com:1.service
~# cp /lib/systemd/system/aaa@qq.com /etc/systemd/system/aaa@qq.com:1.service
aaa@qq.com:1.service文件中有以下两行,要把Type改为simple,要把<USER>改为linux的用户名:
Type=forking
ExecStart=/sbin/runuser -l <USER> -c "/usr/bin/vncserver %i"
PIDFile=/home/<USER>/.vnc/%H%i.pid
如果我们现在这份是配置给root的,那么上面就会被改成:
Type=simple
ExecStart=/sbin/runuser -l root -c "/usr/bin/vncserver %i"
PIDFile=/root/.vnc/%H%i.pid
1.2.4.配置多个桌面
Linux下的VNC可以同时启动多个vncserver,各个vncserver之间用显示编号(display number)来区分,每个vncserver服务监听3个端口
打开/etc/sysconfig/vncservers:
~# vi /etc/sysconfig/vncservers
配置多桌面,格式:VNCSERVERS=“桌面号:使用的用户名 桌面号:使用的用户名…”
VNCSERVERS="1:root 2:kyunban"
VNCSERVERARGS[1]="-geometry 1024x768 -alwaysshared"
VNCSERVERARGS[2]="-geometry 1024x768 -alwaysshared"
上面指定了每个用户使用的显示号,显示分辨率和允许vncserver同时连接多个vncviewer(客户端)。
1.2.5.执行以下命令使用服务单元文件生效
~# systemctl daemon-reload
~# systemctl enable aaa@qq.com:1.service
1.2.5.配置防火墙
~# vim /etc/sysconfig/iptables
打开的文件(一般为空),加入如下语句,当然如果需要更多的端口,可以加5903,5904…
VNC默认使用TCP端口5900至5906。一个服务端可以在5500用监听模式连接一个客户端,使用监听模式可以不用设置防火墙。
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 5901 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 5902 -j ACCEPT
配置好,重启一下防火墙:
~# firewall-cmd --permanent --add-service vnc-server
~# systemctl restart firewalld.service
1.2.6启动vnc服务
~# systemctl start aaa@qq.com:1.service
2.在Ubuntu上安装VNC客户端
可以安装vncviewer或Remmina。本例采用Remmina。Remmina 是一款在 Linux 和其他类 Unix 系统下的*开源、功能丰富、强大的远程桌面客户端,它用 GTK+ 3 编写而成。它适用于那些需要远程访问及使用许多计算机的系统管理员和在外出行人员。它以简单、统一、同质、易用的用户界面支持多种网络协议。Remmina 支持 RDP、VNC、NX、XDMCP 和 SSH。
~$ sudo apt-get install remmina remmina-plugin-* freerdp2-x11 pulseaudio
打开Remmina地址栏输入“主机地址:显示编号"即主机IP加上显示编号(界面编号)的方式登录远程centOS服务器。Remmina的使用方法建议参考Remmina使用。
登录设置:
登录远程CentOS服务器:
3.添加VNC账号(在centos服务器上进行)
添加账号这一块,很多种可能性,我这里提供一种验证过的。
3.1.添加系统用户并设置系统登录密码
aaa@qq.com~# adduser kingkong
aaa@qq.com~# passwd kingkong // 按提示输入两次密码
new password:
retype new password:
授予kingkong账号sudo权限,使用下面命令打开sudoers文件:
aaa@qq.com~# visudo
并在打开的sudoers文件中加入:
kingkong ALL=ALL
授权完成!
3.2.配置多桌面
打开/etc/sysconfig/vncservers:
aaa@qq.com~# vi /etc/sysconfig/vncservers
加入kingkong
VNCSERVERS="1:root 2:kyunban 3:kingkong"
VNCSERVERARGS[1]="-geometry 1024x768 -alwaysshared"
VNCSERVERARGS[2]="-geometry 1024x768 -alwaysshared"
VNCSERVERARGS[3]="-geometry 1024x768 -alwaysshared"
3.3.为新账号创建一个vnc单元服务文件
拷贝模板文件/lib/systemd/system/aaa@qq.com到/etc/systemd/system目录下,并命令为aaa@qq.com:3.service
aaa@qq.com~# cp /lib/systemd/system/aaa@qq.com /etc/systemd/system/aaa@qq.com:3.service
aaa@qq.com:3.service文件中有以下两行,要把Type改为simple,要把<USER>改为linux的用户名:
Type=forking
ExecStart=/sbin/runuser -l <USER> -c "/usr/bin/vncserver %i"
PIDFile=/home/<USER>/.vnc/%H%i.pid
改成:
Type=simple
ExecStart=/sbin/runuser -l kingkong -c "/usr/bin/vncserver %i"
PIDFile=/home/kingkong/.vnc/%H%i.pid
3.3.使用账号对应的单元服务文件生效
aaa@qq.com~# systemctl daemon-reload
aaa@qq.com~# systemctl enable aaa@qq.com:4.service
3.4.切换账号登录linux系统
不是使用su命令切换过去哦,而是用kingkong登录系统(logout后,就可以选择kingkong登录),切换过去。
在kingkong的家目录下,启动vncserver,因为一开始vnc没有设置密码,所以会提示设置密码:
aaa@qq.com~$ vncserver
Password:
Verify:
3.5启动对应的单元服务文件,并启动vncserver
aaa@qq.com~$ systemctl start aaa@qq.com:4.service
aaa@qq.com~$ vncservser
这时这个账号就配置完成了。
3.6.再次修改vnc账号密码
vnc账号密码不同于系统账号密码,后者是用passwd命令修改的,前者则要切换到账号下,通过vncpasswd命令修改。最好用那个账号登录系统,再修改。
# 删除~/.vnc/passwd文件,这个是记录vnc账号密码的
~# su 账号
~# rm -rf ~/.vnc/passwd
# 使用命令vncpasswd修改密码
~# vncpasswd
Password:
Verify:
# 再重新启动一下
aaa@qq.com~$ systemctl start aaa@qq.com:4.service
aaa@qq.com~$ vncservser
如果没有删除~/.vnc/passwd文件,那么你无论如何改,密码始终都是root的密码,不会改变。
4.异常处理
-
客户端登录显示
too many security failures
# 列出有哪些vnc进程 ~# vncserver -list # 将进程逐一杀掉,如下是杀掉5 ~# vncserver -kill :5 # 重启vnc ~# vncserver
-
在执行vncserver时,会出现:
xxx:1 is taken because of /tmp/.X11-unix/X1 ....
处理的办法就是将它们删除掉:
aaa@qq.com~$ sudo rm -rf /tmp/.X11-unix/*
欢迎关注!
上一篇: mac终端使用ssh连接虚拟机(也就是连接远程服务器)
下一篇: vnc配置