问题描述
我想在我的桌面上运行 x11vnc(或另一个 VNC 服务器),但我无法找到在任何用户登录之前启动它的方法。回到我使用 vanilla Ubuntu 10.10 Vino 时默认情况下这样做。但是,我现在在 Xubuntu 中找不到这样做的方法。
最佳方案
我通常建议使用备用 VNC 服务器、x11vncserver 或 FreeNX。
FreeNX how to and download info
这假设 VNC 已设置且 run-able:
将下面的代码块复制到 /etc/init.d/vncserver
中。最简单的方法是将它复制到剪贴板,在终端中运行 sudo -i && cat > /etc/init.d/vncserver && exit
,粘贴它,然后键入 Ctrl
– D
`。请务必将 USER 变量更改为您希望 VNC 服务器在其下运行的任何用户。
#!/bin/sh -e
### BEGIN INIT INFO
# Provides: vncserver
# Required-Start: networking
# Default-Start: 3 4 5
# Default-Stop: 0 6
### END INIT INFO
PATH="$PATH:/usr/X11R6/bin/"
# The Username:Group that will run VNC
export USER="mythtv"
#${RUNAS}
# The display that VNC will use
DISPLAY="1"
# Color depth (between 8 and 32)
DEPTH="16"
# The Desktop geometry to use.
#GEOMETRY="<WIDTH>x<HEIGHT>"
#GEOMETRY="800x600"
GEOMETRY="1024x768"
#GEOMETRY="1280x1024"
# The name that the VNC Desktop will have.
NAME="my-vnc-server"
OPTIONS="-name ${NAME} -depth ${DEPTH} -geometry ${GEOMETRY} :${DISPLAY}"
. /lib/lsb/init-functions
case "$1" in
start)
log_action_begin_msg "Starting vncserver for user '${USER}' on localhost:${DISPLAY}"
su ${USER} -c "/usr/bin/vncserver ${OPTIONS}"
;;
stop)
log_action_begin_msg "Stoping vncserver for user '${USER}' on localhost:${DISPLAY}"
su ${USER} -c "/usr/bin/vncserver -kill :${DISPLAY}"
;;
restart)
$0 stop
$0 start
;;
esac
exit 0
使用 sudo chmod +x /etc/init.d/vncserver
使脚本可执行。
然后,运行 sudo update-rc.d vncserver defaults
。这会将适当的符号链接添加到 vncserver 脚本,以便在适当的时间向它发送启动和停止命令。
注意:如果作业在启动过程中运行得太早,您可能需要使用 sudo update-rc.d vncserver 99
。
要在不重新启动的情况下启动服务器,请运行 sudo /etc/init.d/vncserver start
最后,在端口 590X 上使用 VNC 客户端连接到您的服务器,其中 X 是 vncserver 脚本中 “DISPLAY” 的值
次佳方案
我的解决方案:
-
转到桌面共享并允许它共享并输入一个好的密码。\n(单击关闭以允许权限)
-
转到屏幕并将其设置为 30 秒后锁定。
-
转到用户并允许自动登录。
vino 服务器启动,您应该能够连接到它。如果需要保护它,可以使用 ssh 为 VNC 创建隧道(我使用 PUTTY,效果很好)。您还可以启用防火墙,只允许来自特定地址的流量。这个解决方案已经在 20 多个 Ubuntu 机器上为我工作。