admin管理员组

文章数量:1586675

Linux 常用命令指南 - vino命令 vnc服务端


文章目录

  • Linux 常用命令指南 - vino命令 vnc服务端
  • 一、vino 是什么?
  • 二、vino 使用场景
    • 2.1 vino 安装
    • 2.2 vino 启动服务端
    • 2.3 vino 服务端配置
  • 三、总结


一、vino 是什么?

vino 是linux上一个用于远程桌面连接的 VNC 服务端。

二、vino 使用场景

2.1 vino 安装

ubuntu 环境安装 vino :

$ sudo apt install vino
$ sudo apt install dconf-editor # 非必需,查看gsettings 软件包

2.2 vino 启动服务端

查看 vino 服务配置 /usr/lib/systemd/user/vino-server.service 内容如下:

[Unit]
Description=Vino VNC Server

[Server]
Type=dbus
BusName=org.gnome.Vino
ExecStart=/usr/lib/vino/vino-server
Restart=on-abnormal

可通过 systemctl 命令启动:

$ systemctl --user restart vino-server.service  # 启动 vino 服务
$ systemctl --user status

2.3 vino 服务端配置

vino 服务端可以通过 gsettings 进行控制。

gsettings 配置文件如果想修改并生效可按如下操作:

# vino gsettings 配置文件所在目录
$ sudo vim /usr/share/glib-2.0/schemas/org.gnome.Vino.gschema.xml
# gnome glib schema 编译使gsettings配置文件生效
$ sudo glib-compile-schemas /usr/share/glib-2.0/schemas

获取 vino 的所有 gsettings 键值对:

```bash
$ gsettings list-recursively org.gnome.Vino

# 5900端口号如果被防火墙阻挡,可以通过ufw执行以下操作运行5900可用
# ufw enable ; ufw allow 5900`
# vnc端口号为5900,有时该端口号也会被其他vnc服务抢占(如x11vnc),
# 端口抢占后导致 vino 出现异常,可以更改端口号或者关闭其他vnc服务
org.gnome.Vino alternative-port uint16 5900 

# 认证方式,当设置为 ['vnc'],同时 require-encryption 设置为true,即客户端连接vnc服务时,需要登陆密码。
org.gnome.Vino authentication-methods ['none'] 

org.gnome.Vino disable-background false
org.gnome.Vino disable-xdamage false
org.gnome.Vino icon-visibility 'client'
org.gnome.Vino lock-screen-on-disconnect false
org.gnome.Vino mailto ''
org.gnome.Vino network-interface ''
org.gnome.Vino notify-on-connect true

# true 代表客户端连接时,需要服务端手动确认
org.gnome.Vino prompt-enabled true 

org.gnome.Vino require-encryption true
org.gnome.Vino use-alternative-port false
org.gnome.Vino use-upnp false

# true 代表只可以查看远程vnc远程桌面,不可编辑控制
org.gnome.Vino view-only false

# 密码采用base64加解密,可以通过python3 base64库进行解析
org.gnome.Vino vnc-password 'keyring' 

注: vnc-password 密码加解密可参考 Python3 编码解码Base64数据 :

$ python3
>>> import base64
>>> w = b'1234567' # vnc-password 想设置的密码明文
>>> # Encode as Base64
>>> w_encode = base64.b64encode(w)
>>>> # 经过base64编码的w_encode 为最终 vnc-password 设置的密码
>>>> print(w_encode) 
b'MTIzNDU2Nw=='
>>> base64.b64decode(w_encode)
b'1234567'
>>>

第一种设置 vino 服务方法,通过 gsettings 命令行设置:

# 设置vnc连接服务密码
$ gsettings set org.gnome.Vino vnc-password 'MTIzNDU2Nw==' 

可以将相关 gsettings 设置写入一个脚本 ~/vino-set.sh

$ vi ~/vino-set.sh # 加入以下内容

#!/bin/bash
# DISPLAY为需要展示的vnc 屏幕,对于多屏幕来说需要额外设置
export DISPLAY=:0 
gsettings set org.gnome.Vino enabled true
gsettings set org.gnome.Vino prompt-enabled false
gsettings set org.gnome.Vino require-encryption false
xrandr --fb 1280x1024 # 设置分辨率
/usr/lib/vino/vino-server &

$ sudo chmod +x ~/vino-set.sh # 赋予可执行权限
$ ~/vino-set.sh # 设置并启动vino服务

第二种设置 vino 服务方法,通过启动 dconf-editor 进入 /org/gnome/desktop/remote-access/ vino 所在gsettings 页面设置。

当vino 默认分辨率比较模糊,除了xrandr可以设置分辨率,也通过客户端 remmina 设置 vnc 连接的分辨率为良好,这样就不会模糊了。

三、总结

本文介绍了linux上一个用于远程桌面连接的 VNC 服务端。

本文标签: 服务端命令指南常用命令Linux