Windows下使用VNC链接CentOS7远程桌面

在实际维护远程linux服务器主机时,有时候纯命令行模式可能没法知足咱们的须要,这时候须要使用远程主机的GUI模式,即能看到服务器的桌面,通常会使用两种方式:Xmanager或者VNC。我一开始使用的是Xmanager,版本是Xmanager5 Enterprise,可是在链接服务器时,能够链接上(已经看到主机名),却没法打开桌面,折腾了好久终于放弃,选择了VNC,相比之下方便不少。下面就本身的实践经验小结下,须要的朋友能够看看。
说明下我这里CentOS主机已经安装了Gohome桌面,没有安装的请安装一个gui桌面。
1、Linux主机安装VNC服务
一、安装vnc-server
VNC分为服务端和客户端,linux服务器主机须要安装vncserver,centos7下通常使用tigervnc。
root下执行命令:
#yum install -y tigervnc-server
linux

安装完毕后须要配置。centos

二、配置vnc-server
服务器

进入目录oracle

#cd /lib/systemd/system
#ls
app

咱们会看到有个service叫作vncserver@.service,这就是咱们须要的vnc服务。可是须要对它进行配置才可使用。假设咱们当前为root用户配置远程桌面,配置流程以下:dom

首先,复制该service,命名为vncserver@:1.service,tcp

#cp vncserver@.service vncserver@:1.service
ide

而后修改vncserver@:1.serviceui

#vi vncserver@:1.service
this

看到以下文本:

[Unit]
Description=Remote desktop service (VNC)
After=syslog.target network.target
[Service]
Type=forking
# Clean any existing files in /tmp/.X11-unix environment
ExecStartPre=/bin/sh -c ‘/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :’
ExecStart=/sbin/runuser -l < User> -c “/usr/bin/vncserver %i ”
PIDFile=/home/< User>/.vnc/%H%i.pid
ExecStop=/bin/sh -c ‘/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :’
[Install]
WantedBy=multi-user.target

这里须要且只须要作一种替换:将< User>替换为须要配置的用户。注意由于root的home目录就是/root/,而不是/home/root/,因此替换后文本以下:

[Unit]
Description=Remote desktop service (VNC)
After=syslog.target network.target
[Service]
Type=forking
# Clean any existing files in /tmp/.X11-unix environment
ExecStartPre=/bin/sh -c ‘/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :’
ExecStart=/sbin/runuser -l root -c “/usr/bin/vncserver %i ”
PIDFile=/root/.vnc/%H%i.pid
ExecStop=/bin/sh -c ‘/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :’
[Install]
WantedBy=multi-user.target

若是是非root用户,例如用户admin,PIDFile处应该是:

ExecStart=/sbin/runuser -l admin -c “/usr/bin/vncserver %i ”
PIDFile=/home/admin/.vnc/%H%i.pid

最后Esc+:wq保存退出。

三、启动vnc-server

在刚才的配置文件中,有这样一段说明:

# Quick HowTo:
# 1. Copy this file to /etc/systemd/system/vncserver@:.service
# 2. Edit and vncserver parameters appropriately
# (“runuser -l -c /usr/bin/vncserver %i -arg1 -arg2”)
# 3. Run systemctl daemon-reload
# 4. Run `systemctl enable vncserver@:.service

即配置完后,还需执行

#systemctl daemon-reload
#systemctl enable vncserver@:1.service

而后开启vnc服务

#systemctl start vncserver@:1.service

查看启动是否成功

#systemctl status vncserver@:1.service
若是现实active即表示开启成功。下面设置下vnc链接密码,
执行
#vncpassword

提示输入密码并确认,这是供远程链接时验证用的,本身设置一下便可。配置好之后能够重启下vnc服务

#systemctl restart vncserver@:1.service
四、配置防火墙
vnc服务虽然开启了,可是若是远程客户端须要链接,还须要为防火墙增长配置以开放端口。通常vnc服务是以590+x做为访问端口,x为配置的service@:x,例如此处的vncserver@:1.service,则端口是5901。
执行命令
#vi /etc/sysconfig/iptables

-A INPUT -p tcp -m state –state NEW -m tcp –dport 22 -j ACCEPT

下方添加配置

-A INPUT -p tcp -m state –state NEW -m tcp –dport 5901 -j ACCEPT

而后保存退出,重启防火墙。到这里基本的vnc服务端配置就结束了。

2、客户端远程链接

配置好了服务端的vnc服务后,远程就能够链接了。这里使用的是win7下链接,客户端使用的是tigervnc-1.5.0,百度下通常都有,下载后直接安装,安装过程当中能够去掉做为服务端的勾选,不过不要紧。以后进入安装目录,找到vncviewer.exe,双击执行,输入ip和端口号,点击connection便可,而后按照提示输入以前配置的访问密码,回车,便可看到远程的linux主机桌面。

3、开启多个vncserver

有时候咱们可能须要不止一个用户的桌面环境,好比我在远程安装oracle时,还须要一个oracle用户的桌面环境,而以前仅仅配置了root用户的,下面介绍下配置多用户的vncserver。配置思路很简单,就是配置多个vncserver@:n.service。

一、复制vncserver@.service

假设咱们的用户已经创建好,这里以admin为例。首先以root用户登陆,在

#cd /lib/systemd/system

目录下,和前述同样,拷贝配置文件,不过这里不是:1,而是:2,数字能够本身设置,通常递增。

#cp vncserver@.service vncserver@:2.service

而后修改vncserver@:2.service

#vi vncserver@:2.service

修改配置

[Unit]
Description=Remote desktop service (VNC)
After=syslog.target network.target
[Service]
Type=forking
# Clean any existing files in /tmp/.X11-unix environment
ExecStartPre=/bin/sh -c ‘/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :’
ExecStart=/sbin/runuser -l admin -c “/usr/bin/vncserver %i ”
PIDFile=/home/admin/.vnc/%H%i.pid
ExecStop=/bin/sh -c ‘/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :’
[Install]
WantedBy=multi-user.target

保存退出。而后按照配置文件提示,执行

#systemctl daemon-reload
#systemctl enable vncserver@:2.service
二、修改vnc登陆验证密码

执行完毕后,切换到admin帐户,执行

$vncserver :2

会要求输入验证密码

You will require a password to access your desktops.

Password:
Verify:
xauth: file /home/admin/.Xauthority does not exist

New ‘localhost.localdomain:2 (admin)’ desktop is localhost.localdomain:2

Creating default startup script /home/admin/.vnc/xstartup
Starting applications specified in /home/admin/.vnc/xstartup
Log file is /home/admin/.vnc/localhost.localdomain:2.log
三、启动服务

以后切换回root,执行

#systemctl deamon-reload
#systemctl start vncserver@:2.service

这时候提示启动不成功,执行命令

#vncserver :2

提示已经有一个vncserver as :2 running了,这时候咱们先要杀掉这个进程,执行命令

#vncserver -kill :2

但通常没有用,那么咱们

# ps -ef | grep vnc

查看vncserver :2的进程id,如pid为1311,则执行

#kill -9 1311

而后再执行

#systemctl start vncserver@:2.service

仍是报错,查看日志,

#journalctl -xn
提示须要删除/tmp/.X2-lock
执行
#rm /tmp/.X2-lock

再次启动

#systemctl start vncserver@:2.service
仍是报错,查看日志,提示须要删除/tmp/.X11-unix/X2
执行
#rm /tmp/.X11-unix/X2

再次启动

#systemctl start vncserver@:2.service

终于不报错了,而后查看状态

#systemctl status vncserver@:2.service

发现已经启动,则完成。以后注意不要忘了如前述配置防火墙。

到此为止就结束了全部的配置,在实际启动过程当中可能会遇到各类各样的问题,你们只要静下心来查看日志,通常都能解决。有错误的地方,还望指正。



  • centos7 安装tigervnc过程当中遇到的问题

centostigervnc

[root@localhost system]# systemctl daemon-reload [root@localhost system]# systemctl enable vncserver@:1.service [root@localhost system]# systemctl start vncserver@:1.service Job for vncserver@:1.service failed. See ‘systemctl status vncserver@:1.service’ and ‘journ alctl -xn’ for details.[root@localhost system]# systemctl status vncserver@:1.service vncserver@:1.service - Remote desktop service (VNC) Loaded: loaded (/etc/systemd/system/vncserver@:1.service; enabled) Active: failed (Result: exit-code) since Thu 2015-04-23 16:04:58 CST; 14s ago Process: 24764 ExecStart=/sbin/runuser -l root -c /usr/bin/vncserver :1 -geometry 1280x10 24 -depth 24 (code=exited, status=98) Process: 24760 ExecStartPre=/bin/sh -c /usr/bin/vncserver -kill %1 > /dev/null 2>&1 || : (code=exited, status=0/SUCCESS) Apr 23 16:04:58 localhost.localdomain systemd[1]: vncserver@:1.service: control proces…98 Apr 23 16:04:58 localhost.localdomain systemd[1]: Failed to start Remote desktop servi…). Apr 23 16:04:58 localhost.localdomain systemd[1]: Unit vncserver@:1.service entered fa…e. Hint: Some lines were ellipsized, use -l to show in full. [root@localhost system]#



把 vncserver@:1.service 中的 Type 參數設置為 simple 再執行 systemctl daemon-reload再執行 systemctl start vncserver:1.service便可解決

相关文章
相关标签/搜索