作者:alittlemc | 更新中 | 原创文章,可能有技术理解错误,欢迎指正,请与我联系,谢谢!
命令和快速总结
realvnc创建
# :会话id -name 取名字 -depth 色深 -geometry 分辨率
vncserver :5 -name VNC1 -depth 24 -geometry 1920x1080
# 看一下有哪些端口
vncserver -list # kill掉:2
vncserver -kill :2

配置文件位置

#当前用户
cat ~/.vnc/config # 总的
cat /etc/vnc/config

VNC

Linux有许多版本,大致可以分为桌面版和服务器版本(桌面也是个应用程序,叫X),有时候安装了桌面版但是身边没有额外显示器,或者是对服务器集群中的linux进行操作时候,我们可以使用VNC来实现远程控制。

RealVNC

其实我是更喜欢Real的,但是这个要收费了

1、安装

# redhat系列
sudo yum install tigervnc-server # debian系列
sudo apt-get install realvnc-vnc-server

2、运行vncserver

每执行一次vncserver,就会启动一次VNC会话,多一对vnc端口监听。
[root@client_149 .vnc]# vncserver -h

usage: vncserver [:<number>] [-name <desktop-name>] [-depth <depth>]
[-geometry <width>x<height>]
[-pixelformat rgbNNN|bgrNNN]
[-fp <font-path>]
[-cc <visual>]
[-fg]
[-autokill]
[-noxstartup]
[-xstartup <file>]
[-fallbacktofreeport]
<Xvnc-options>... vncserver -kill <X-display> vncserver -list

常用的参数:

参数
备注
:<端口id>
可以理解是指定会话id,同时对应的监听端口,5900+id
-name <名字>
给会话命名
-depth <色深>
在创建时候自定义色深
-geometry x
在创建时候自定义分辨率
-list
查看全部的会话
-kill :<端口id>
选择要关闭的端口id啦

 vncserver :2 -name VNC:2 -geometry 1920x1080 -depth 24

执行完成后会显示提示:这里提示了日志保存在~/.vnc/client_149:2.log,不过log太多了哈哈,看不明白。

如果出现Error: No license keys found.之类的提示,是因为新版本的RealVNC开始商业化了(收费),需要授权码,去网上找一下。

# 授权码
vnclicense -add WHJRK-UXY7V-Q34M9-CZU8L-8KGFA
# 如果这个不得可以试一下其他授权码
S4J7A-XWXY5-KXAJW-54KRA-TP3QA
48R4P-NFZ46-NBCWY-Q2ZJT-3H9RA
Z456C-LMKTC-NLGWQ-H5CUR-ZVWEA
A5HDP-LXKYN-UK4W6-XACZJ-ENWLA
NRDX9-ZF9C5-JLGY7-CUC5J-77J2A
SSEWK-HBDM6-YYCWC-M3BQV-9XMDA

# 激活成功了运行一下
vncserver :2 -name VNC:2 -geometry 1920x1080 -depth 24

#使用netstat看一下监听端口
sudo netstat -apn | grep vnc

安装好RealVNC,systemd会自带两个相关的service。

  • x11-serverld和virtuald和效果类似,但是也是有所不同,根据需要任选一个即可
  • x11直接连接到linux的x桌面,如果有其他vnc会话,也是共用查看界面
  • virtuald和TightVNC原理差不多,每一个用户有独立的桌面,有点像云主机?
# 启动 & 开机启动
sudo systemctl start vncserver-virtuald.server && systemctl enable vncserver-virtuald.server
sudo systemctl start vncserver-x11-serviced.service && systemctl enable vncserver-x11-serviced.service

3、登录

在手机或者电脑安装VNC Client之类的软件,ip:port即可完成连接,比如我这里使用的是VNC Viewer。账号密码使用系统中的账号密码即可。
冒号后加端口,可以直接使用netstat监听的ip:5902,也可以使用之间启动venserver定义的端口,会自动转换5900+端口。
 

4、修改分辨率

其实修改分辨率只是个药引子,主要是引出配置文件的路径,其他设置也是同理的。

方法1在启动时候定义

vncserver -geometry 1920x1080

方法2修改~/.vnc.config

方法3修改/etc/vnc/config

可以直接修改在/etc/vnc/config下的配置文件,比如在后面追加参数 -geometry 1920x1080。
sudo echo -geometry 1920x1080 >> /etc/vnc/config

参考官方的修改分辨率的方法:如何在 Linux 下调整虚拟桌面的屏幕分辨率?– RealVNC帮助中心

方法4修改/etc/X11/vncserver-virtual-dummy.conf

gtf生成文本
gtf x y 刷新率

请注意,输入gtf命令后并没有生效,它只是生成一段配置,我们要在/etc/X11/vncserver-virtual-dummy.conf中再修改。
 
修改好后重新启动服务生效啦。

5、管理

在此之前我执行了三次vncserver,对应的也有三对端口(比如图中5902和6002,5903和6003,5904和6004);三个unix。

关闭可以直接使用kill之类的命令杀死进程,(感觉有点残忍哈哈,不推荐)。

可以使用vncserver -list和-kill
# 看一下有哪些端口
vncserver -list
# kill掉:3
vncserver -kill :3

TigerVNC

1、安装

# redhat系列
sudo yum install tigervnc tigervnc-server

#debian系列
sudo apt install tigervnc-standalone-server tigervnc-common
  • 官网下载源代码mark一下
  • 也可以下载现成的二进制文件deb、rpm离线安装

2、配置

一般的模板的配置文件在这路径中/usr/lib/systemd/system/vncserver@.service
将文件copy到/etc/systemd/system/vncserver@.service
为了兼顾多用户,可以这样命名vncserver@:1.service、vncserver@:2.service等这样命名。
cp /usr/lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:1.service

vim /etc/sysconfig/vncservers@:1.server

ExecStart=/usr/bin/vncserver_wrapper <USER> %i 这行中的改为本地的用户,比如再另外adduser个新用户,passwd修改密码用于vnc登录也可行。

图中我偷懒,直接用root吧
# 刷新一下systemd
sudo systemctl daemon-reload

3、设置密码和启动

# 设置密码
# 就是用户的密码啦,和你ssh登录密码一样的passwd
# 启动服务
sudo systemctl start vncserver@:1.service

常见故障

监听端口

服务监听端口可以使用netstat查看,使用apn和tlpn都可以啦,个人习惯使用apn。
sudo netstat -apn | grep vnc
sudo netstat -tlpn | grep vnc

防火墙

外部设备无法访问
可能是是防火墙的问题

iptables

# 看一下规则条目
sudo iptables -L -n

依据netstat的结果,对对应的端口的tcp和udp开放,不过显然是有点麻烦。

sudo iptables -I INPUT -p tcp --dport 5999-j ACCEPT
sudo iptables -I INPUT -p udp --dport 5999 -j ACCEPT # 同理直接编辑配置文件也可以
sudo systemctl reload

firewall

# 查看一下防火墙配置
sudo firewall-cmd --list-all # 永久 添加vnc-server到public区,(推荐)
sudo firewall-cmd --permanent --zone=public --add-service=vnc-server
sudo firewall-cmd --reload # 也可以直接通过添加端口tcp、udp都要加上,局限性较大
sudo firewall-cmd --add-port=5901/tcp --permanent --zone=public
sudo firewall-cmd --add-port=5901/udp --permanent --zone=public
sudo firewall-cmd --add-port=6001/tcp --permanent --zone=public
sudo firewall-cmd --add-port=6001/udp --permanent --zone=public
sudo firewall-cmd --reload
如果有桌面啦,在桌面的终端试一下firewall-config图形化界面。
 

在Linux下配置RealVNC和TigerVNC的更多相关文章

  1. Linux下配置一个VNC服务器

    在Linux下配置一个VNC服务器,并设置2个用户,要求其中一个用户登录时不需要输入密码. 然后在客户端使用ssh+vncview的方式访问. 1确认vnc安装 2配置vncserver 3测试vnc ...

  2. linux下配置mysql默认编码utf8

    linux下配置mysql默认编码utf8 下面是需要在对应地方加入的配置 [client] default-character-set=utf8 [mysqld] character-set-ser ...

  3. Linux下配置Lamp

    linux下配置lamp步骤: 一.快速安装Apache+PHP5+MySql 先更新: # yum update 然后安装LAMP环境:(163的yum源上只有php5.1.6 mysql 5.0. ...

  4. Linux下配置PHP开发环境

    转载于: http://www.uxtribe.com/php/405.html 该站下有系列PHP文章. 在Linux下搭建PHP环境比Windows下要复杂得多.除了安装Apache,PHP等软件 ...

  5. 一步一步教你如何在linux下配置apache+tomcat(转)

    一步一步教你如何在linux下配置apache+tomcat   一.安装前准备. 1.   所有组件都安装到/usr/local/e789目录下 2.   解压缩命令:tar —vxzf 文件名(. ...

  6. Linux下配置Tomcat服务器

    Linux下配置Tomcat服务器和Windows下其实差不多,可以去官网下载安装包释放或者在线下载,只是当时下载的windows.zip文件,现在下载.tar.gz格式的即可,下面使用命令行的方式安 ...

  7. Linux下配置JDK

    下面以CentOS为例,详细说一下Linux下配置JDK的过程 首先按照约定俗成的习惯,将jdk放在/usr/local/java下,首先进入/usr/local然后新建一个目录java 然后我们需要 ...

  8. Linux下配置Node环境变量及问题详解

    这是之前在Linux下配置Node环境变量时踩过的坑,今天又有小伙伴询问这个问题,因此记录下来,不仅是给新童鞋们一些参考,也方便日后查阅 在这之前,相信都已经安装好了,没安装的可以查看博主另一篇文章 ...

  9. Linux 下配置 SoftEther Client

    我经常使用的代理有 SSH, GoAgent, FreeGate, VPN, HttpProxy 等等,不过 SoftEther 应该是我用过的最快.最稳定的 VPN 协议. Windows 下配置 ...

随机推荐

  1. .NET中按预定顺序执行任务

    更新记录 本文迁移自Panda666原博客,原发布时间:2021年7月1日. 一.说明 在.NET中线程可以定义按先后顺序进行执行,适合部分有先后次序的业务逻辑.Task也可以按照预定义的先后顺序执行 ...

  2. 抓到 Netty 一个 Bug,顺带来透彻地聊一下 Netty 是如何高效接收网络连接的

    本系列Netty源码解析文章基于 4.1.56.Final版本 对于一个高性能网络通讯框架来说,最最重要也是最核心的工作就是如何高效的接收客户端连接,这就好比我们开了一个饭店,那么迎接客人就是饭店最重 ...

  3. vim插件pathogen的Helptags不起作用

    如果你安装了中文vim帮助,并且在其中添加了自己的帮助文件,并且当你使用了pathogen的时候. 会发现Helptags不起作用. 原因是Helptags的实现没有考虑到中文的情况 解决办法如下: ...

  4. Calendar类介绍_获取对象的方式和Calendar类的常用成员方法

    java.util.Calendar类:日历类 Calendar类是一个抽象类,里边提供了很多操作日历字段的方法(YEAR.MONTH.DAY_OF_MONTH.HOUR ) Calendar类无法直 ...

  5. APISpace 日出日落API接口 免费好用

    日出是每个早晨太阳的一半从地平线探出头的时刻,也指太阳穿过地平线的整个过程及其伴随的大气效应.日落是指由于地球自转导致太阳每天从地平线消失的时刻.从赤道上看,春分和秋分时,太阳从正西方落下.从中纬度地 ...

  6. Codeforces Round #801 (Div. 2) and EPIC Institute of Technology Round(C,D题解)

    Codeforces Round #801 (Div. 2) and EPIC Institute of Technology Round C - Zero Path 在这道题目中,不可以真正地进行寻 ...

  7. 图的存储结构大赏------数据结构C语言(图)

    图的存储结构大赏------数据结构C语言(图) 本次所讲的是常有的四种结构: 邻接矩阵 邻接表 十字链表 邻接多重表 邻接矩阵 概念 两个数组,一个表示顶点的信息,一个用来表示关联的关系. 如果是无 ...

  8. Operating System_via牛客网

    题目 链接:https://ac.nowcoder.com/acm/contest/28537/F 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 131072K,其他语 ...

  9. C#基础-面向对象详解

    面向对象详解 一.什么是面向对象 1>面向对象是一种程序设计思想 2>面向过程和面向对象是什么? 例如要把大象放冰箱怎么做? 面向过程:打开冰箱门->把大象扔进去->关上冰箱门 ...

  10. 第一天python3 封装和解构

    封装 将多个值使用逗号分割,组合在一起:本质上,返回一个元组,只是省略了小括号:python特有语法,被很多语言学习和借鉴;比如javascript:t1=(1,2) 定义为元组:t2=1,2 将1和 ...