我知道如何在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.
有用的链接:
答案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 上的此服务。