Centos7作为VNCserver,本地使用VNCViewer连接

1.概念

VNC是一个远程连接工具
VNC is used to display an X windows session running on another computer. Unlike a remote X connection, the xserver is running on the remote computer, not on your local workstation. Your workstation ( Linux or Windows ) is only displaying a copy of the display ( real or virtual ) that is running on the remote machine.

There are several ways to configure the vnc server. This HOWTO shows you how to configure VNC using the 'vncserver' service as supplied by CentOS.

2.安装

2.1客户端:

yum install vnc

2.2 服务端:

1) 保证已安装windows桌面:yum groupinstall "GNOME Desktop Environment"
或者最小化安装:yum install xterm
2) 安装vnc-server:
yum install vnc-server

3.设置并运行

3.1 创建一个用于vnc连接的用户user01,并切换到user01登陆,当然,你也可以直接用root用户或其他已存在的普通用户:

[clouder@ana53 soft]$ su root
密码:
[root@ana53 soft]# useradd user01
[root@ana53 soft]# passwd user01
更改用户 user01 的密码 。
新的 密码:
无效的密码: 密码少于 8 个字符
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
[root@ana53 soft]# su - user01
[user01@ana53 ~]$ cd ~
[user01@ana53 ~]$ ll .vnc
ls: cannot access .vnc: No such file or directory

3.2 执行vncserver ,第一次执行会要求设置用于客户端通过vnc连接该用户的密码,以后想更改可以通过vncpasswd更改该连接密码。

注意最后问是否设置一个只读密码要选否,否则客户端登陆只会看到一个黑屏:

[user01@ana53 ~]$ vncserver 
You will require a password to access your desktops.
Password:
Verify:
Would you like to enter a view-only password (y/n)? n
xauth:  file /home/user01/.Xauthority does not exist
New 'ana53:3 (user01)' desktop is ana53:3
Creating default startup script /home/user01/.vnc/xstartup
Creating default config /home/user01/.vnc/config
Starting applications specified in /home/user01/.vnc/xstartup
Log file is /home/user01/.vnc/ana53:3.log

默认是从1开始,但我当前已经有2个vncserver运行,所以现在是3了,第一次执行vncserver后,会在该用户的家目录下创建一个.vnc目录

[user01@ana53 ~]$ ll .vnc/
total 40
-rw-rw-r-- 1 user01 user01 23646 Aug 14 09:56 ana53:3.log
-rw-rw-r-- 1 user01 user01     5 Aug 14 09:55 ana53:3.pid
-rw-r--r-- 1 user01 user01   332 Aug 14 09:55 config
-rw------- 1 user01 user01     8 Aug 14 09:55 passwd
-rwxr-xr-x 1 user01 user01    92 Aug 14 09:55 xstartup

3.3 vncserver -list 查看当前用户开了多少个vncserver,ps -ef |grep vnc看到我有其他2个用户也起了vncserver,这个可以忽略哈:

[user01@ana53 ~]$ vncserver -list
TigerVNC server sessions:
X DISPLAY # PROCESS ID
:3      2338[user01@ana53 ~]$ ps -ef|grep vnc
user1     1750     1  0 09:54 pts/4    00:00:00 /usr/bin/Xvnc :2 -auth /home/user1/.Xauthority -desktop ana53:2 (user1) -fp catalogue:/etc/X11/fontpath.d -geometry 1024x768 -pn -rfbauth /home/user1/.vnc/passwd -rfbport 5902 -rfbwait 30000
user01    2338     1  1 09:55 pts/2    00:00:00 /bin/Xvnc :3 -auth /home/user01/.Xauthority -desktop ana53:3 (user01) -fp catalogue:/etc/X11/fontpath.d -geometry 1024x768 -pn -rfbauth /home/user01/.vnc/passwd -rfbport 5903 -rfbwait 30000
user01    3215  2268  0 09:56 pts/2    00:00:00 grep --color=auto vnc
root     31155     1  0 09:34 ?        00:00:01 /usr/bin/Xvnc :1 -auth /root/.Xauthority -desktop ana53:1 (root) -fp catalogue:/etc/X11/fontpath.d -geometry 1024x768 -pn -rfbauth /root/.vnc/passwd -rfbport 5901 -rfbwait 30000

3.4 客户端连接服务端:

本机也可以作为客户端vnc连接到自己,有条件的再找一个机器作为客户端连接比较符合实际应用场景,我使用本机作为客户端通过vnc连接自己,
我通过这个网址下载vncviewer 客户端工具:
https://www.techspot.com/downloads/downloadnow/5760/?evp=bec5c83724706eae8692a26f014582ed&file=4
输入127.0.0.1:5903 ,输入我设置的vnc密码,连接成功。但出现花屏,原因是分辨率设得太低,于是vnc连接成功后:
鼠标放到顶部,点击"Properties"图标--Options--General--Picture quality:设置为Medium,High,或Automatic,点击右下方ok确认
1461765-20180814095240081-1957394191.png
1461765-20180814095245977-273754244.png

4.其他问题

4.1 第一次执行vncserver,里面好像有句错误提示bad display name in ……,原因是解析不了这个hostname,通过在/etc/hosts添加ip 和hostname映射解决:

[root@ana53 .vnc]# vncserver 
xauth: (stdin):1:  bad display name "ana53:2" in "add" command  New 'ana53:2 (clouder)' desktop is ana53:2  Starting applications specified in /root/.vnc/xstartup
Log file is /root/.vnc/ana53:2.
解决方法:vi /etc/hosts:
192.168.1.253 ana53

4.2 vncviewer连接,始终黑屏:

1) 可能你在第一次给用户设置vnc密码时,最后Would you like to enter a view-only password (y/n)? 回答了y,所以,你应该登陆ssh那个用户,运行vncpasswd,重新设置密码,不要再回y,要回复n;
2) 可能是~/.vnc/xstartup 配置文件问题,贴出我2个用户的配置,root用户的是我修改的,user01是默认的,但是2个都能正常运行。

[root@ana53 .vnc]# cat xstartup 
#!/bin/sh
#unset SESSION_MANAGER
#unset DBUS_SESSION_BUS_ADDRESS
#exec /etc/X11/xinit/xinitrc
# Uncomment the following two lines for normal desktop:
unset SESSION_MANAGER
exec /etc/X11/xinit/xinitrc
[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
vncconfig -iconic &
xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" & gnome-session &
[user01@ana53 .vnc]$ cat xstartup 
#!/bin/sh
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
exec /etc/X11/xinit/xinitrc

4.3把vncserver做成系统服务,这样比较方便,固定端口号n,而且可以设置开机自启,要有sudo权限才能关闭。

注意,复制vncserver@.service的时候,必须改为vncserver@:n.service,n表示第几个vncserver,默认从1开始,记得必须要冒号,否则会服务是起不来的:

1) 复制系统服务,并重命名

如此案例中我的user01用户开的vncserver 的display窗口是第3号,所以我要把这个vncserver做成系统服务,就复制一个vncserver@:3.service到/etc/systemd/system 目录下,这个根据每个人的具体情况而定,当然,可以运行vncserver :n 来指定要起第几号窗口:

[root@ana53 .vnc]# cp /usr/lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:3.service

2)修改复制后的系统服务里面的<USER>为你想要通过vnc登陆的用户,注意要把尖括号去掉了

注意PIDFile=/home/<USER> 这里,如果是root用户,应该把/home去掉,因为root用户的home目录不是在/home下,而是在/根目录下。

[root@ana53 .vnc]# vim /etc/systemd/system/vncserver@:4.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=/usr/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

修改后:

[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=/usr/sbin/runuser -l user01 -c "/usr/bin/vncserver %i"
PIDFile=/home/user01/.vnc/%H%i.pid
ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'[Install]
WantedBy=multi-user.target

3) 重载系统服务,修改了服务文件,必须重载才能生效:

[root@ana53 .vnc]# systemctl daemon-reload 

4) 启动该vncserver,并设为开机自启:

[root@ana53 .vnc]# systemctl status vncserver@:4.service
● vncserver@:4.service - Remote desktop service (VNC)Loaded: loaded (/etc/systemd/system/vncserver@:4.service; disabled; vendor preset: disabled)Active: active (running) since 二 2018-08-14 10:27:21 CST; 9min agoMain PID: 9930 (Xvnc)CGroup: /system.slice/system-vncserver.slice/vncserver@:4.service‣ 9930 /usr/bin/Xvnc :4 -auth /home/user01/.Xauthority -desktop ana53:4 (user01) -fp catalogue:/etc/X11/fontpath.d -geometry 102...8月 14 10:27:17 ana53 systemd[1]: Starting Remote desktop service (VNC)...
8月 14 10:27:21 ana53 systemd[1]: Started Remote desktop service (VNC).[root@ana53 .vnc]# systemctl enable vncserver@:4.service
Created symlink from /etc/systemd/system/multi-user.target.wants/vncserver@:4.service to /etc/systemd/system/vncserver@:4.service.

5) 关闭vncserver

方法一:使用vncserver -kill :n 命令,注意,kill后面有一个空格。这个命令只能kill 掉自己的vncserver,因为他是去/home/$user/.vnc/去找pid的:
[user01@ana53 .vnc]$ ps -ef|grep vnc
user1     1750     1  0 09:54 pts/4    00:00:00 /usr/bin/Xvnc :2 -auth /home/user1/.Xauthority -desktop ana53:2 (user1) -fp catalogue:/etc/X11/fontpath.d -geometry 1024x768 -pn -rfbauth /home/user1/.vnc/passwd -rfbport 5902 -rfbwait 30000
root      3623     1  0 10:00 ?        00:00:00 /usr/bin/Xvnc :1 -auth /root/.Xauthority -desktop ana53:1 (root) -fp catalogue:/etc/X11/fontpath.d -geometry 1024x768 -pn -rfbauth /root/.vnc/passwd -rfbport 5901 -rfbwait 30000
user01   18521     1  1 11:02 ?        00:00:00 /usr/bin/Xvnc :4 -auth /home/user01/.Xauthority -desktop ana53:4 (user01) -fp catalogue:/etc/X11/fontpath.d -geometry 1024x768 -pn -rfbauth /home/user01/.vnc/passwd -rfbport 5904 -rfbwait 30000
user01   19146  2268  0 11:03 pts/2    00:00:00 grep --color=auto vnc
[user01@ana53 .vnc]$ vncserver -kill :2Can't find file /home/user01/.vnc/ana53:2.pid
You'll have to kill the Xvnc process manually[user01@ana53 .vnc]$ vncserver -kill :4
Killing Xvnc process ID 18521
[user01@ana53 .vnc]$ ps -ef|grep vnc
user1     1750     1  0 09:54 pts/4    00:00:00 /usr/bin/Xvnc :2 -auth /home/user1/.Xauthority -desktop ana53:2 (user1) -fp catalogue:/etc/X11/fontpath.d -geometry 1024x768 -pn -rfbauth /home/user1/.vnc/passwd -rfbport 5902 -rfbwait 30000
root      3623     1  0 10:00 ?        00:00:00 /usr/bin/Xvnc :1 -auth /root/.Xauthority -desktop ana53:1 (root) -fp catalogue:/etc/X11/fontpath.d -geometry 1024x768 -pn -rfbauth /root/.vnc/passwd -rfbport 5901 -rfbwait 30000
user01   19302  2268  0 11:03 pts/2    00:00:00 grep --color=auto vnc
方法二:使用systemctl 命令,前提user01有sudo 权限:
[user01@ana53 .vnc]$ sudo systemctl stop vncserver@:2.service
[sudo] password for user01: 
[user01@ana53 .vnc]$ sudo systemctl stop vncserver@:4.service
[user01@ana53 .vnc]$ ps -ef|grep vnc
root      3623     1  0 10:00 ?        00:00:00 /usr/bin/Xvnc :1 -auth /root/.Xauthority -desktop ana53:1 (root) -fp catalogue:/etc/X11/fontpath.d -geometry 1024x768 -pn -rfbauth /root/.vnc/passwd -rfbport 5901 -rfbwait 30000
user01   20152  2268  0 11:06 pts/2    00:00:00 grep --color=auto vnc
之前一直起不来服务,原来写错了,少了个冒号:
[root@ana53 system]# systemctl status vncserver@:1.service
● vncserver@:1.service - Remote desktop service (VNC)Loaded: loaded (/etc/systemd/system/vncserver@:1.service; enabled; vendor preset: disabled)Active: active (running) since 二 2018-08-14 09:26:00 CST; 2s agoProcess: 28940 ExecStart=/usr/sbin/runuser -l root -c /usr/bin/vncserver %i (code=exited, status=0/SUCCESS)Process: 28938 ExecStartPre=/bin/sh -c /usr/bin/vncserver -kill %i > /dev/null 2>&1 || : (code=exited, status=0/SUCCESS)Main PID: 28972 (Xvnc)CGroup: /system.slice/system-vncserver.slice/vncserver@:1.service‣ 28972 /usr/bin/Xvnc :1 -auth /root/.Xauthority -desktop ana53:1 (root) -fp catalogue:/etc/X11/fontpath.d -geometry 1024x768 -p...8月 14 09:25:57 ana53 systemd[1]: Starting Remote desktop service (VNC)...
8月 14 09:26:00 ana53 systemd[1]: Started Remote desktop service (VNC).
[root@ana53 system]# systemctl status vncserver@1.service
● vncserver@1.service - Remote desktop service (VNC)Loaded: loaded (/usr/lib/systemd/system/vncserver@.service; disabled; vendor preset: disabled)Active: failed (Result: exit-code) since 二 2018-08-14 09:24:20 CST; 2min 1s agoProcess: 28767 ExecStart=/usr/sbin/runuser -l <USER> -c /usr/bin/vncserver %i (code=exited, status=1/FAILURE)Process: 28763 ExecStartPre=/bin/sh -c /usr/bin/vncserver -kill %i > /dev/null 2>&1 || : (code=exited, status=0/SUCCESS)8月 14 09:24:20 ana53 systemd[1]: Starting Remote desktop service (VNC)...
8月 14 09:24:20 ana53 runuser[28767]: runuser: user <USER> does not exist
8月 14 09:24:20 ana53 systemd[1]: vncserver@1.service: control process exited, code=exited status=1
8月 14 09:24:20 ana53 systemd[1]: Failed to start Remote desktop service (VNC).
8月 14 09:24:20 ana53 systemd[1]: Unit vncserver@1.service entered failed state.
8月 14 09:24:20 ana53 systemd[1]: vncserver@1.service failed.

转载于:https://www.cnblogs.com/xiaozhuangAna/p/9472741.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/282449.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在URL中实现简易的WebAPI验签

本文主要介绍一种与微信公众平台对接方式类似的&#xff0c;为 AspNetCore 提供的一种简易的 WebAPI 签名验证中间件。本文相关源码和案例已开源&#xff0c;地址&#xff1a;https://github.com/sangyuxiaowu/SignAuthorization原理说明简易的 API url 签名验证中间件&#xf…

Redis -- Hash(哈希) [3]

Redis Hash 是一个string类型的field和value的 映射表 &#xff0c;hash特别适合用于存储对象。 注 : Redis 中每个 hash 可以存储 232 - 1 键值对&#xff08;40多亿&#xff09;。 比如这样:注:在此,首先推荐一款redis可视化工具 https://redisdesktop.com/download , 是非常…

HBuilder 打包流程

1.运行HBuilder---百度搜索HBuilder&#xff0c;官网下载安装包&#xff0c;解压&#xff0c;运行HBuilder.exe。注册账号&#xff0c;并登陆 2.新建app---在左边右键&#xff0c;选择新建APP&#xff0c;或者&#xff0c;点击中间的新建app 3.在弹出的窗口&#xff0c;填入应用…

Python3——字典

Python 字典(Dictionary) 字典是另一种可变容器模型&#xff0c;且可存储任意类型对象。 字典的每个键值(key>value)对用冒号(:)分割&#xff0c;每个对之间用逗号(,)分割&#xff0c;整个字典包括在花括号({})中 定义字典 d {} d {key1 : value1, key2 : value2 } d di…

科技以换皮为本:路遥工具箱 V4 版本发布

作为定位“开发辅助”的工具&#xff0c;我也一直在想如何让工具更有效率。是更快的打开速度还是更丰富的功能&#xff1f;路遥工具箱 V3 版本的界面布局是偏 BS 后台系统的风格&#xff1a;可折叠的树形菜单用来拓宽用户的操作区域&#xff0c;多标签的功能布局让软件保持整洁…

myisam数据表根据frm文件恢复数据表

有时,我们重装mysql时,可能忘记备份数据了, 只留下了之前的mysql下面的data文件夹里的数据, 这时我们应该如何去恢复数据表呢 如果直接将原来的data目录导进现在的mysql,肯定是不行的,其实很简单 我们常用的数据表结构有myisam和innodb,这两种数据表恢复数据的方式是不一样的,这…

本文主要总结关于mysql的优化(将会持续更新)

2019独角兽企业重金招聘Python工程师标准>>> ON DUPLICATE KEY UPDATE 事件背景 在阅读公司原来代码的过程中&#xff0c;我发现了这样一段代码: $sql "INSERT INTO {$table} ({$fields}) VALUES " . $values; if (!empty($onDuplicate)) {$sql . ON DU…

ASP.NET Core 在 IIS 下的两种部署模式

KestrelServer最大的优势体现在它的跨平台的能力&#xff0c;如果ASP.NET CORE应用只需要部署在Windows环境下&#xff0c;IIS也是不错的选择。ASP.NET CORE应用针对IIS具有两种部署模式&#xff0c;它们都依赖于一个IIS针对ASP.NET CORE Core的扩展模块。一、ASP.NET CORE Cor…

navicat连接远程mysql

环境介绍: 这里,我连接的是阿里云的服务器,自己搭的环境,用的是mysql 5.7一 首先第一步,需要进入远程服务器的mysql,更改host访问权限 然后,将root允许访问的host 改为%(任何ip地址都可以访问) 注: 原来是只允许本地访问二 本地用navicat连接远程mysql 1. 常规部分填写2. SSH部…

面向对象五大设计原则

最近在看七牛云许式伟的架构课, 重温了面向对象五大设计原则(SOLID)&#xff0c;扣理论文字找出处。&#xff08;当然许老板是不可能深聊这么低级的内容&#xff0c;&#x1f921;&#xff09;注意区分设计原则和设计模式。设计原则更为抽象和泛化&#xff1b;设计模式也是抽象…

谷歌F12调试公众号时,让鼠标显示出来

yi 环境介绍: win10 , 谷歌浏览器yii 概述: 在项目中,需要调试公众号,本地环境搭好之后,在谷歌浏览时,发现移动到公众号区域,鼠标居然不见了,这让我怎么操作?各种操作可谓是日了狗了,非常麻烦yiii 调试时鼠标不见的解决办法: 网上各种说法众说纷纭,这里,我给出本人认为最恰当简…

利用bootstrap插件设置时间

$("#"id_rand" .shijian-input").each(function () { $(this).datetimepicker({ lang:"ch", //语言选择中文 注&#xff1a;旧版本 新版方法&#xff1a;$.datetimepicker.setLocale(ch); format: "hh : ii", /…

C# 编写的 64位操作系统 -MOOS

MOOSMOOS ( My Own Operating System )是一个使用.NET Native AOT技术编译的C# 64位操作系统。项目地址&#xff1a;https://github.com/nifanfa/MOOS编译关于编译MOOS的信息&#xff0c;请阅读 编译维基页面&#xff1a;https://github.com/nifanfa/MOOS/wiki/。编译要求VMwar…

JAVA语言基础-面向对象(IO:IO字符流、递归)

2019独角兽企业重金招聘Python工程师标准>>> 21.01_IO流(字符流FileReader) 1.字符流是什么 字符流是可以直接读写字符的IO流字符流读取字符, 就要先读取到字节数据, 然后转为字符. 如果要写出字符, 需要把字符转为字节再写出.2.FileReader FileReader类的read()方法…

windows下, nginx 提示错误 No input file specified

一 环境介绍: win10, LNMP 二 错误描述: 访问网站时,提示"No input file specified"错误. 排错阶段: 1. 查看nginx access日志 (access.log) 发现提示404 错误 2. 分析原因: 这时,在同目录下创建一个txt文件,访问就可以正常输出了 这说明 现在nginx 访问php 没…

Ubuntu20.04+docker+jenkins+飞书实现自动化发布

一、从0-1一点一滴实现如何本地提交代码到gitlab然后实现前后端自动发布1.更新apt包索引sudo apt-get update2.安装必备的软件包以允许apt通过https使用存储库sudo apt-get install ca-certificates curl gnupg lsb-release3.添加Docker官方版本的GPG密钥sudo mkdir -p /etc/ap…

一个Demo让你掌握Android所有控件

一个Demo让你掌握Android所有控件 原文:一个Demo让你掌握Android所有控件本文是转载收藏,侵删,出处:"安卓巴士" 下面给出实现各个组件的源代码&#xff1a; 1.下拉框实现--Spinner [java] view plaincopyprint?package com.cellcom; import java.util.ArrayList;…

九妹带你走向 架构师

迈向系统架构师编者按&#xff1a;系统架构师是许多程序员的梦想职业。今天的你也许已经掌握了各种开发工具&#xff0c;并且能够使用各种平台进行开发&#xff0c;但作为一个架构师的要求&#xff0c;也许还有很长的道路。邢波涛先生在LAMP架构上的造诣&#xff0c;让我邀请他…

WPF 使用 DrawingContext 绘制温度计

WPF 使用 DrawingContext 绘制温度计控件名&#xff1a;Thermometer作者&#xff1a; WPFDevelopersOrg原文链接&#xff1a; https://github.com/WPFDevelopersOrg/WPFDevelopers框架使用大于等于.NET40&#xff1b;Visual Studio 2022;项目使用 MIT 开源许可协议&#xff…

装win10系统

一、使用U盘介质安装win10系统&#xff08;官方方式&#xff09; 官方安装工具下载地址&#xff1a;https://www.microsoft.com/zh-cn/software-download/windows10 1、进入官方安装工具下载页面&#xff0c;点击立即下载工具&#xff0c;下载安装工具。2、下载完成后&#xff…