我有一个安装了基本 xfce 环境和 tightvncserver 的 vps。
我希望每当我启动与其运行的端口的连接时,tightvncserver 就会自动启动(在我的情况下是5901
)。
我见过一些关于使用inetd
或xinetd
执行此操作的帖子,但我也看到很多帖子说 (x)inetd 由于某种原因未包含在 Ubuntu 中,并且使用它不是一个好主意。
无论如何,我正在寻找一种方法每当有到端口 5901 的传入连接时,自动启动 tightvncserver,最好尽可能减少依赖项
答案1
我不知道为什么“使用 xinetd 或 inetd 不是一个好主意”。我检查了两个错误跟踪器,没有发现任何安全问题。
话虽如此,我会尝试重复您已经发现的有关配置“xinetd”的内容:
xinetd
配置非常简单。它使用/etc/xinetd.d/
目录来存储所有每个服务的配置,因此您只需创建配置即可启动tightvncserver
,sudo 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
}
就这样。现在你应该禁用tightvncserver
rc-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 技术的含义,仅此而已。