如何让 Linux VNC 服务器监听本地 IP 而不是仅仅环回?

如何让 Linux VNC 服务器监听本地 IP 而不是仅仅环回?

我知道如何在Linux下指定VNC服务器的监听端口,但令我困惑的是,我找不到指定VNC监听IP的方法。

在 CentOS 5.6 下启动 VNC 服务器时,我发现它的进程“Xvnc”正在监听127.0.0.1:5901。也许这就是为什么我使用任何 XNC 客户端时总是无法进入的原因。我不知道为什么它监听“lo”网络接口而不是“eth0”。

答案1

听起来你的 vncserver 是使用localhost参数启动的:

# vncserver -h

usage: vncserver [:<number>] [-nohttpd] [-name <desktop-name>] [-depth <depth>]
                 [-geometry <width>x<height>]
                 [-pixelformat rgbNNN|bgrNNN]
                 <Xvnc-options>...

# Xvnc -h
Unrecognized option: -h
...
Global Parameters:
  localhost      - Only allow connections from localhost (default=0)

您可能应该检查一下/etc/sysconfig/vncservers和初始化脚本/etc/init.d/vncserver

如果你想绑定到特定的 IP,可以使用 iptables 或者查看

答案2

对于 TigerVNC,量子已经提到过,尝试-interface像这样使用 Xvnc-option:。选项vncserver <your options here> -interface <ip address>-localhost可能是原因。

Xvnc -help:

  interface      - listen on the specified network address (default=all)
  localhost      - Only allow connections from localhost (default=0)

vncserver -help:

    [-localhost [yes|no]]    
      if enabled, VNC will only accept connections from localhost.

有用的链接:

https://tigervnc.org/doc/Xvnc.html

https://linux.die.net/man/1/xvnc

答案3

VNC 有不同的风格,但我将继续描述 TightVNC 的设置。

首先,确认您正在使用 Xfce4。在本例中,我使用 XUbuntu 21.10,默认为 XFCE。使用以下命令检查:

sudo apt list --installed | grep xfce4

注意:在标准 Ubuntu 上,如果没有 xfce4,我无法让此配置正常工作。

接下来安装 TightVNC,如下所示:

sudo apt upgrade & sudo apt update
sudo apt install xfce4-goodies
sudo apt install tightvncserver ssh openssl

然后运行:

vncpassword
echo -e '#!/bin/bash \nxrdb $HOME/.Xresources \nstartxfce4 & \n'

此时,您可以运行vncserver命令来启动它,但我们想将其作为服务运行。因此,创建此服务文件,但修复sammy此文件中的 4 个用户名实例以匹配您的系统用户/组:

#/etc/systemd/system/[email protected]
[Unit]
Description=Start TightVNC server at startup
After=syslog.target network.target

[Service]
Type=forking
User=sammy
Group=sammy
WorkingDirectory=/home/sammy

PIDFile=/home/sammy/.vnc/%H:%i.pid
ExecStartPre=-/usr/bin/vncserver -kill :%i > /dev/null 2>&1
ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800 :%i
ExecStop=/usr/bin/vncserver -kill :%i

[Install]
WantedBy=multi-user.target

在该配置中,我抑制了该参数的使用-localhost,以便 VNC 服务将在端口 5901 上监听并允许所有远程主机的访问。

然后运行这些命令一次:

sudo systemctl daemon-reload
sudo systemctl enable [email protected]
sudo vncserver -kill :1
sudo systemctl start vncserver@1
sudo systemctl status vncserver@1

现在,从远程计算机,从另一台计算机上的 VNC 客户端连接到端口 5901 上的此服务。

相关内容