如果使用服务启动,则连接到 vncserver

如果使用服务启动,则连接到 vncserver

我已按照此处的说明设置 vncserver 服务: https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-vnc-on-ubuntu-14-04

由于我已经安装了 vnc4server,因此我只使用了设置 vncserver 服务的部分。

启动vncserver的选项:

  1. 通过运行来使用我创建的服务: sudo service vncserver start/stop/restart。它运行良好,并启动了 Xvnc4 进程。
  2. 只需在终端中输入 vncserver。

在这两种情况下,我都已仔细检查与 vnc4server 关联的 Xvnc4 服务是否已启动并正在运行ps -aux | grep vnc

在这两种情况下,都会创建一个显示器并将其附加到显示器 1。

我的问题:当我使用选项 1 启动我的 vncserver 时,我无法使用 vncviewer 连接到从我的 Windows PC 创建的显示器。

当我使用选项 2 时,我能够使用 vncviewer 从我的 Windows PC 连接到显示器。我只需提供serverip:<display#>

为什么使用选项 1 时无法连接。另外,建议使用诸如 putty 之类的工具设置安全隧道,然后通过它进行连接只是为了安全吗?我之所以问这个问题,是因为当我使用上面的选项 2 启动 vncserver 时,我能够使用远程连接,而servername or ip:display#无需使用 putty 或任何类型的隧道。

这是我的~/.vnc/xstartup

#!/bin/bash
xrdb $HOME/.Xresources
startxfce4 &

这是我的/etc/init.d/vncserver服务文件:

#!/bin/bash
PATH="$PATH:/usr/bin/"
export USER="mo"
DISPLAY="1"
DEPTH="16"
#GEOMETRY="1024x768"
#GEOMETRY="1600x1200"
GEOMETRY="1366x768"
OPTIONS="-depth ${DEPTH} -geometry ${GEOMETRY} :${DISPLAY} -localhost"
. /lib/lsb/init-functions

case "$1" in
start)
log_action_begin_msg "Starting vncserver for user '${USER}' on localhost:${DISP$
su ${USER} -c "/usr/bin/vncserver ${OPTIONS}"
;;

stop)
log_action_begin_msg "Stopping vncserver for user '${USER}' on localhost:${DISP$
su ${USER} -c "/usr/bin/vncserver -kill :${DISPLAY}"
;;

restart)
$0 stop
$0 start
;;
esac
exit 0

答案1

感谢steeldriver的指点,我的问题是我在电脑上的putty中的设置是错误的。我使用的是远程服务器地址,而不是“localhost”。为了满足我对两个显示器的需求,我在同一个连接下在putty中设置了两个不同的隧道:

localhost:5901

localhost:5902

然后,我修改了 /etc/init.d/vncserver 以在两个不同的显示器上启动两个 vncserver 实例。

#!/bin/bash
PATH="$PATH:/usr/bin/"
export USER="mo"
DISPLAY="1"
DISPLAY2="2"
DEPTH="16"
#GEOMETRY="1024x768"
#GEOMETRY="1600x1200"
GEOMETRY="1366x768"
OPTIONS="-depth ${DEPTH} -geometry ${GEOMETRY} :${DISPLAY} -localhost"
OPTIONS2="-depth ${DEPTH} -geometry ${GEOMETRY} :${DISPLAY2} -localhost"

. /lib/lsb/init-functions

case "$1" in
start)
log_action_begin_msg "Starting vncserver for user '${USER}' on localhost:${DISP$
su ${USER} -c "/usr/bin/vncserver ${OPTIONS}"


log_action_begin_msg "Starting vncserver for user '${USER}' on localhost:${DISP$
su ${USER} -c "/usr/bin/vncserver ${OPTIONS2}"

;;

stop)
log_action_begin_msg "Stopping vncserver for user '${USER}' on localhost:${DISP$
su ${USER} -c "/usr/bin/vncserver -kill :${DISPLAY}"


log_action_begin_msg "Stopping vncserver for user '${USER}' on localhost:${DISP$
su ${USER} -c "/usr/bin/vncserver -kill :${DISPLAY2}"

;;

restart)
$0 stop
$0 start
;;
esac

然后,我能够使用 Windows PC 上的 vncviewer 连接到显示器 1 和显示器 2,从而在某种程度上模仿双屏设置。对我来说,这很管用。如果有人对为什么不应该这样做有任何警告或见解,我将很乐意得到反馈。

相关内容