如何按需启动 vnc 服务器(而不是在启动时)

如何按需启动 vnc 服务器(而不是在启动时)

我有一个安装了基本 xfce 环境和 tightvncserver 的 vps。

我希望每当我启动与其运行的端口的连接时,tightvncserver 就会自动启动(在我的情况下是5901)。

我见过一些关于使用inetdxinetd执行此操作的帖子,但我也看到很多帖子说 (x)inetd 由于某种原因未包含在 Ubuntu 中,并且使用它不是一个好主意。

无论如何,我正在寻找一种方法每当有到端口 5901 的传入连接时,自动启动 tightvncserver,最好尽可能减少依赖项

答案1

我不知道为什么“使用 xinetd 或 inetd 不是一个好主意”。我检查了两个错误跟踪器,没有发现任何安全问题。

话虽如此,我会尝试重复您已经发现的有关配置“xinetd”的内容:

xinetd配置非常简单。它使用/etc/xinetd.d/目录来存储所有每个服务的配置,因此您只需创建配置即可启动tightvncserversudo vim /etc/xinetd.d/tightvncserver创建一个文件,然后插入您的配置(这可以根据您的需要进行修改):

service tightvncserver
{
        socket_type     =  stream
        protocol        =  tcp
        wait            =  no
        ## I don't run a vnc server myself, but you should change this for the user your VNC service uses.
        user            =  root
        port            =  5901
        server          =  /usr/sbin/tightvncserver
        ## This allows access from anyone in the 192.168 subnet, if you want anyone, just do not add this line.
        only_from       =  192.168.0.0
        log_on_failure  += USERID
        disable         =  no
}

就这样。现在你应该禁用tightvncserverrc-d 目录中的启动功能。

您还可以添加更多选项,但我将把这些留给手动的

答案2

我不会尝试使用,而是tightvncserver尝试使用@Braiam 建议的相同方法,但使用 Xvnc。

service Xvnc
{
        disable = no
        type = UNLISTED
        socket_type = stream
        protocol = tcp
        user = nobody
        wait = yes
        server = /usr/bin/Xvnc
        server_args = -inetd :1 -query localhost -geometry 1024x768 -depth 16 -NeverShared -once -rfbauth /root/.vncpasswd
        port = 5901
}

您可以通过更改上面的这一位来调整密码文件所在的位置:/root/.vncpasswd。该文件的权限可能不太稳定,因此您可能需要使它们成为chmod 600 .vncpasswd

如果您需要更多详细信息,请查看教程,2. 使用 xinetd 启动 VNC 服务器这展示了将 VNC 作为服务运行的多种不同方式xinetd

使用 xinetd

关于不使用 xinetd 的所有评论都是废话。它是一种非常好的服务,就像其他一切一样,您需要了解使用 X 技术的含义,仅此而已。

相关内容