28
11月
2023
将 VNC 服务器 x11vnc 作为服务启动
1:20

将 VNC 服务器 x11vnc 作为服务启动

28 11月 2023 1:20

x11vnc 是任何 Ubuntu 发行版中都包含的远程桌面程序。 接下来,我将告诉您如何配置 x11vnc 以作为服务运行。

简介

VNC 是一个类似于 Radmin Server 的远程桌面,仅适用于 Linux。 此外,VNC 是 XRDP 的更好替代方案。

安装 x11vnc 和 VNC 插件

sudo apt update && sudo apt install x11vnc remmina-plugin-vnc

安装 VNC 查看客户端

sudo apt install remmina

1) 首次启动程序 - 作为应用程序

1.1) 生成密码

x11vnc -storepasswd

输入两次密码(可能与任何密码不同并且很简单)并按“y"

密码将保存到文件 /home/USERNAME/.vnc/passwd

1.2) 将 x11vnc 程序作为控制台应用程序启动以检查操作

这是用于启动 VNC X11 作为应用程序的现成行。

x11vnc -auth guess -forever -loop -noxdamage \
-repeat -rfbauth /home/USERNAME/.vnc/passwd \

-rfbport 5900

在不知道 Xauth 文件位置的情况下首次启动时需要 -auth猜测
-forever -loop -repeat - 以无限循环运行程序
-rfbauth /home/USERNAME/.vnc/passwd - VNC 的密码文件
-rfbport 5900 - 程序将侦听的外部端口

该命令可以作为 sh 文件使用。

<代码>#!/bin/sh
x11vnc -auth猜测-forever -loop -noxdamage -repeat -rfbauth /home/vladimir/.vnc/passwd -rfbport 5900

启动后,将开始无限循环。

在另一个窗口中,首先使用显示处于 LISTENING 状态的端口的键运行 netstat

sudo netstat -plnt

如果端口 5900 存在于某种状态 听力,启动 remmina 并配置用于查看 VNC 的插件:

*新连接 - VNC 类型*
服务器 - 127.0.0.1**

系统将提示您输入 VNC 密码 - 请输入。 将显示桌面。

2)将x11vnc转换为服务

我们需要了解变量:

  • -auth 密钥的文件路径
  • 按键的显示名称 - 显示
  • VNC密码文件的路径需要修改为/root/....

    2.1) 找出-auth键的变量值

为此,您需要运行 ps 命令来输出具有完整路径的工作进程

须藤 ps wwwwaux | grep 验证

我们正在寻找提到 -auth 的行:

/usr/lib/xorg/Xorg -core :0 -seat Seat0 -auth /var/run/lightdm/root/:0-不监听 TCP

在这里,我用粗体突出显示了 -auth 开关的路径。
现在已经在排队了 -auth猜测 可以指定 -auth /var/run/lightdm/root/:0

2.2) 找出显示编号 使用相同的选项 -auth 猜测它会写在下面。 5900端口使用显示 :0,所以在参数中 -display :0, либо -display compname:0

2.3)我们在passwd文件中生成用户su的密码,它将保存到 /root/.vnc 文件夹中:

sudo x11vnc -storepasswd

Enter VNC password:
Verify password:
Write password to /root/.vnc/passwd? [y]/n

对于最后一个问题,请按 Enter 键(默认情况下 - y)。

3)在文件夹中创建/usr/local/bin/我们的 Shell 文件 x11vnc-lightdm,这将在 x11vnc 服务启动时启动 x11vnc 程序:

sudo nano /usr/local/bin/x11vnc-lightdm

我们将之前配置的 x11vnc 参数传输到文件文本中的 $OPTS 行中。

文件内容 /usr/local/bin/x11vnc-lightdm:

<前>#!/bin/bash
选项=
执行 /usr/bin/x11vnc\
$选项\
-rfbauth /root/.vnc/passwd -rfbport 5900 \
-forever -loop -bg -ncache -auth /var/run/lightdm/root/:0 -display :0

(或“自动”:而不是 -auth /var/run/lightdm/root/:0 можно указать -auth guess )。

4) 创建一个SystemD单元文件来启动x11vnc服务:

sudo nano /etc/systemd/system/x11vnc.service

其内容如下:
<上一篇>[单位]
描述=X11 的 VNC 服务器
需要=graphical.target
之后=图形.目标

[服务]
ExecStart=/usr/local/bin/x11vnc-lightdm

[安装]
WantedBy=graphical.target

5) 启用并启动新服务x11vnc.service

sudo systemctl enable x11vnc.service
sudo systemctl start x11vnc.service

6) 诊断:检查x11vnc.service的状态以及VNC端口5900上的LISTENING状态

sudo systemctl status x11vnc.service

如果服务正在运行(活动),请检查它是否正在侦听端口 5900/TCP:

sudo netstat -plnt

如果配置正确,监听端口 5900 LISTEN 将可见:

有效的互联网连接(仅限服务器)
Proto Recv-Q Send-Q 本地地址 外部地址 状态 PID/程序名称

tcp 0 0 0.0.0.0:5900 0.0.0.0:* 监听 35821/x11vnc

7) 在本地主机上使用 remmina 首次连接到 VNC

同一台 PC 上的第一次连接是测试连接。
在 remmina 中,我们创建到 locahost 的 VNC 连接,然后“保存并连接”。
或者双击您创建的到本地主机服务器的 VNC 连接。

系统将提示您输入服务器密码。 输入设置为 root 的服务器密码(在第 2.3 段中)。

8)在ufw个人防火墙上打开端口5900(或你自己的)

sudo ufw allow 5900/tcp

9) 现在您可以通过VNC远程连接

从远程 PC 或从路由器“转发”端口 5900。 或者我们组织一个VPN,那么remmina连接将发生在本地网络内的PC地址,例如192.168.1.100。

x11vnc.service 服务在 PC 启动时启动,并且不依赖于用户是否登录。

在客户端:
我在 remmina 中创建了一个新连接。
注意:最小客户端屏幕分辨率为 1200 x 900!)。

vnc连接

*名称 - VNC 主页

  • 协议 -VNC Remmina 模块
  • 服务器 - 192.168.99.11(替换为您自己的)
  • 用户密码-VNC服务器的密码,通过命令设置 sudo x11vnc -storepasswd (第 2.3 条)
  • 色彩深度 - 高色彩(16 位)
  • 质量 - 最好(最慢)

最后一个动作: 保存并连接



相关出版物