【主机】vnc 介绍以及安装时注意的问题

简介:
Linux下Vnc远程桌面Server配置教程
http://www.aiezu.com/Article/Linux_Vnc_Server_conf.aspx
用VNC实现远程桌面共享(支持Windows, Linux,...)
http://easwy.com/blog/archives/linux-remote-desktop-by-vnc/
# [ 原理 ]# 
#--------------------------------------------
VNC,全称为Virtual Network Computing,使用 RFB(Remote FrameBuffer,远程帧缓冲)
协议来实现远程控制另外一台计算机。把键盘、鼠标动作发送到远程计算机,并把远程计算机的屏幕发回到本地
VNC技术与平台无关,VNC Viewer可以和VNC Server在不同的操作系统上
VNC几乎支持所有的操作系统,也支持Java,甚至可以通过支持Java的浏览器来访问VNC Server

多个 VNC 客户端可以同时连接到一个 VNC Server
显示编号(display number)来区分,每个vncserver服务监听3个端口,分别是:

5800+显示编号:  VNC的httpd监听端口,如果VNC客户端为IE,Firefox等非vncviewer时必须开放。
5900+显示编号:  VNC服务端与客户端通信的真正端口,必须无条件开放。
6000+显示编号:  X监听端口,可选。

首先需要配置 VNC 密码,密码在使用客户端连接服务器时使用
注意:VNC 密码保存在用户的主目录中,每个用户都可以设置自己的密码
因此,请使用你的用户名(尽量不要使用root)运行下列命令:

在启动VNC server时,需要为 server指定一个display参数
可以把display理解为一个桌面,每个用户都可以有自己的桌面,在系统中,display号不能重复
VNC server监听的端口从5801开始,display :1的监听5801,display :2监听5802,以此类推
# [ /etc/sysconfig/vncservers ]# {{{
#--------------------------------------------
显示编号、开放的端口分别由
/etc/sysconfig/vncservers 文件中 VNCSERVERS 和 VNCSERVERARGS 控制
VNCSERVERS的设置方式为
VNCSERVERS="显示编号1:用户名1 …",如:VNCSERVERS="1:root 2:aiezu"
VNCSERVERARGS 设置方式为
VNCSERVERARGS[显示编号1]="参数一 参数值一 参数二 参数值二  ……"
如VNCSERVERARGS[2]="-geometry 800x600 -nohttpd"

VNCSERVERARGS的详细参数有:
-geometry           桌面分辨率,默认1024x768;
-nohttpd            不监听HTTP端口(58xx端口);
-nolisten tcp       不监听X端口(60xx端口);
-localhost          只允许从本机访问;
-AlwaysShared       默认只同时允许一个vncviewer连接,此参数允许同时连多个vncviewer;
-SecurityTypes None 登录不需要密码认证VncAuth默认值,要密码认证。
# vi /etc/sysconfig/vncserver
    VNCSERVERS="1:root 2:oracle" 
    VNCSERVERARGS[1]="-geometry 1024x768 -nolisten tcp" 
    VNCSERVERARGS[2]="-geometry 1024x768 -nolisten tcp" 
# [ 设置用户登录密码 / 生成用户配置文件 ]# {{{
#--------------------------------------------
设置VNC用户密码:
# XXX 此步不可跳过放在后面操作,否则VNC Server将无法启动
# su - ink
# vncpasswd  
Password:
Verify:
# su - root  
# vncpasswd  
Password:  
Verify: 
# [ 启动 vncserver ]
#--------------------------------------------
    # service vncserver start
运行上面命令后,分别会在用户根目录($HOME)下的".vnc"文件夹下生成一系列文件
其中passwd为vnc用户密码文件,由vncpasswd生成。xstartup为VNC客户端连接时启动的脚本
启动VNC server的命令是:
vncserver
# vncserver
New 'localhost.localdomain:1 (root)' desktop is localhost.localdomain:1
Starting applications specified in /root/.vnc/xstartup
Log file is /root/.vnc/localhost.localdomain:1.log

# [ 自定义 xstartup ]#
#--------------------------------------------

修改".vnc/xstartup"文件
vncserver 默认使用的窗口管理器是 twm
编辑这个文件:.vnc/xstartup
#!/bin/sh  
# 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" &  --可以要可以不要
#twm &
# gnome-session & 

重启 vncserver 使配置生效

# }}}

# [ 配置防火墙 ]#
#--------------------------------------------
必须允许VNC的相关端口(58xx,59xx,60xx)
vi /etc/sysconfig/iptables
-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 5900:5903 -j ACCEPT
允许其它机器访问本机的5900到5903端口,这样,display:1, display:2, display:3 用户就可以连接到本机
我的是 -A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 5801:6003 -j ACCEPT
安装vnc时,要检查一下iptables的设置,如果没有开放vnc端口的访问,是连接不上的,而且vnc客户端会提示 failed connection:操作成功完成!(0)这样的错误提示!
#-------------------------------------------
在windows下使用vncviewer+putty.exe通过ssh安全通道连接:
打开putty,在左边的"Category"中依次点"Connection"->"SSH"->"Tunnels"
在"Source Port"文本框中输入"5901","Destination"文本框中输入"localhost:5901"
点击"Add,添加端口转发。然后在putty左边的"Category"下点"Session"
输入服务器的IP地址后,点"Open"按钮,输入密码登陆后,既成功启用了端口转发
接着在本机打开vncviewer输入"127.0.0.1:5901"即可成功连接到远程的5901端口
在Linux下使用vncviewer+ssh安全通道连接:
与④类似,在linux vnc客户端shell下运行"ssh -L 5901:localhost:5901 vncserverhost"命令
输入用户名密码。即完成通过shh安全通道,将远程的5901端口转发到本机的5901端口
然后在shell下运行"vncviewer 127.0.0.1:1"命令即可以连接到远程的VNC Server
#

#--------------------------------------------
查看VNC正在运行的显示编号端口号?
答:在Linux命令提示符下执行"netstat -tlup|grep vnc",即可以查看到端口号,端口号后两位即显示编号
如何关闭指定的显示编号?
答:vncserver -kill :number 即可以关闭指定的显示编号和对应的端口号
在通过VNC连接的图形界面桌面启动X应用时出现:"Error: Can't open display: :0.0"错误?
答:请使用"echo $DISPLAY"命令查看"DISPLAY"坏境变量是否设置为":显示编号:0",如:":1:0"
如果不是此形式,启动X应用时会出现此错误。此时可以通过"export DISPLAY=:1:0"设置正确的DISPLAY
还有一种可能就是切换了用户启动X应用,当前用户没有权限使用X窗口,这时返回到启用VNC的用户
运行"xhost +"允许其他用户访问此X窗口即可
如果配置完成后出现能够通过键盘输入数字,但是不能输入字符的情况,就要看看你的客户端的输入法的设置是否和服务器端的设置是否一致。一般两端都要是英文的!
相关文章
|
弹性计算
阿里云服务器开放全部端口给所有IP使用教程
阿里云服务器端口全部开放教程,阿里云端口在安全组中设置,默认只开放22和3389端口,全部开放端口-1/-1,授权给所有IP地址0.0.0.0/0
9792 0
阿里云服务器开放全部端口给所有IP使用教程
|
11月前
|
传感器 监控 自动驾驶
|
Cloud Native Docker 容器
云原生之使用docker部署qbittorrent
云原生之使用docker部署qbittorrent
699 2
云原生之使用docker部署qbittorrent
|
10月前
|
Android开发 开发者 Python
通过标签清理微信好友:Python自动化脚本解析
微信已成为日常生活中的重要社交工具,但随着使用时间增长,好友列表可能变得臃肿。本文介绍了一个基于 Python 的自动化脚本,利用 `uiautomator2` 库,通过模拟用户操作实现根据标签批量清理微信好友的功能。脚本包括环境准备、类定义、方法实现等部分,详细解析了如何通过标签筛选并删除好友,适合需要批量管理微信好友的用户。
383 7
|
12月前
|
前端开发
为什么用PageAdmin CMS建设网站?
许多企业在寻求建站解决方案时,倾向于选择成熟的CMS系统自助建站。其中,PageAdmin CMS因多项优势备受青睐。它具备站群管理和自动化插件,简化了集中管理与开发流程。拥有17年开发历史,PageAdmin CMS的安全性和稳定性满足高标准要求,同时支持前后端分离,便于定制化设计。无需掌握复杂框架即可快速建站,并支持私有化部署,赋予用户更多控制权,减少维护成本。持续的功能更新和广泛的行业应用,确保了其作为长久可靠的建站工具的地位。
137 6
|
12月前
|
机器学习/深度学习 人工智能 算法
图灵奖获得者杰夫·辛顿(Geoffrey Hinton)
杰夫·辛顿(Geoffrey Hinton),加拿大-英国籍教育科研工作者,1947年生于英国温布尔登。他因在神经网络和深度学习领域的杰出贡献,于2018年获得图灵奖。辛顿是反向传播算法和对比散度算法的发明人之一,被誉为“AI教父”。他的研究推动了现代神经网络的发展,并在多个国际顶级期刊上发表了多篇重要论文。
697 0
|
数据采集 数据挖掘 大数据
如何处理 PySpark 中丢失的数据?
【8月更文挑战第13天】
237 0
error: Your local changes to the following files would be overwritten by merge
error: Your local changes to the following files would be overwritten by merge
|
数据采集 数据挖掘 BI
带你读《Apache Doris 案例集》—— 02 河北幸福消费金融基于Apache Doris 构建实时数仓,查询提速400倍!(1)
带你读《Apache Doris 案例集》—— 02 河北幸福消费金融基于Apache Doris 构建实时数仓,查询提速400倍!(1)
478 0
|
移动开发 小程序 JavaScript
一文揭秘饿了么跨端技术的演进、实践与落地
本文会先带领大家一起简单回顾下跨端技术背景与演进历程与在这一波儿接着一波儿的跨端浪潮中的饿了么跨端现状,以及在这个背景下,相较于业界基于 React/Vue 研发习惯出发的各种跨端方案,饿了么为什么会选择走另外一条路,这个过程中我们的一些思考、遇到及解决的问题和取得的一些成果,希望能给大家带来一些跨端方面的新思路。
14514 1