如何设置x11vnc来访问图形化的登录界面?

我有一台运行Ubuntu 12.10的服务器,需要能够在不登录的情况下远程访问这台服务器。

我找到了很多解决方案,但似乎没有一个能在12.10系统下工作。

谁能给我一步步的指导,如何配置x11vnc作为一个服务启动(在用户登录之前),以便当用VNC连接时,我将看到一个图形化的登录屏幕?

我是Linux的新手,所以请在您的回答/评论中尽可能多地提供细节。

谢谢

安装x11vnc。

sudo apt-get install x11vnc

为你的用户创建一个密码。

x11vnc -storepasswd

如果你已经设置了ssh,你可以用它来启动x11vnc,假设你已经登录了,但要记得告诉它使用你的密码文件。

x11vnc -usepw

如果你没有登录,你会得到一个错误的解释。

If NO ONE is logged into an X session yet, but there is a greeter login
program like "gdm", "kdm", "xdm", or "dtlogin" running, you will need
to find and use the raw display manager MIT-MAGIC-COOKIE file.
Some examples for various display managers:

 gdm:     -auth /var/gdm/:0.Xauth
          -auth /var/lib/gdm/:0.Xauth
 kdm:     -auth /var/lib/kdm/A:0-crWk72
          -auth /var/run/xauth/A:0-crWk72
 xdm:     -auth /var/lib/xdm/authdir/authfiles/A:0-XQvaJk
 dtlogin: -auth /var/dt/A:0-UgaaXa

假设你是用lightdm登录的,你可以解决这个问题,你可以用命令启动x11vnc。

sudo x11vnc -xkb -noxrecord -noxfixes -noxdamage -display :0 -auth /var/run/lightdm/root/:0 -usepw

我不确定这是否是以root身份运行x11vnc的最好主意。也许有人能编辑出一个不使用sudo就能进入登录的方法。

一旦运行,你应该能够使用vnc客户端连接,比如krdc(用于KDE)。你可能想使用GNU Screen来保持x11vnc的运行而不需要打开ssh会话。

我能够用http://ubuntuforums.org/showthread.php?t=2039022 来解决这个问题。

这里有一个upstart工作的样本,你可以用它来让它在启动时运行。它需要放在/etc/init/x11vnc.conf中。(注意,新版本的Ubuntu使用systemd,所以请看另一个有systemd配置样本的答案)。

# description "start and stop x11vnc"

description "x11vnc"

start on runlevel [2345]
stop on runlevel [^2345]

console log
#chdir /home/
#setuid 1000
#setgid 1000

respawn
respawn limit 20 5

exec x11vnc -xkb -noxrecord -noxfixes -noxdamage -display :0 -auth /var/run/lightdm/root/:0 -usepw

一旦你做了这个文件,你就可以通过运行来启动它。 sudo start x11vnc 你可以在以下位置查看日志。/var/log/upstart/x11vnc.log

评论(9)

上述答案解决了问题,不过对于带systemd的Ubuntu版本(15.04以上)来说,需要做一些修正,具体如下。

  • 利用x11vnc中新的-auth guess功能--这很有帮助!
  • 对systemd进行更新(不是upstart)

运行以下程序进行安装。

sudo apt-get install x11vnc
sudo x11vnc -storepasswd yourVNCpasswordHERE /etc/x11vnc.pass
# for Ubuntu 15.04+
sudo nano /lib/systemd/system/x11vnc.service
# for Ubuntu 16.10+
sudo nano /etc/systemd/system/x11vnc.service

将此插入文件中。

[Unit]
Description="x11vnc"
Requires=display-manager.service
After=display-manager.service

[Service]
ExecStart=/usr/bin/x11vnc -xkb -noxrecord -noxfixes -noxdamage -display :0 -auth guess -rfbauth /etc/x11vnc.pass
ExecStop=/usr/bin/killall x11vnc
Restart=on-failure
Restart-sec=2

[Install]
WantedBy=multi-user.target

然后,以

sudo systemctl daemon-reload
sudo systemctl start x11vnc

并确保该服务在启动时启动。

sudo systemctl enable x11vnc
评论(7)

具体方法如下。

1.安装X11VNC服务器(或通过Ubuntu 软件中心-> X11VNC服务器)

    sudo apt-get install x11vnc

1.创建一个VNC密码文件。

    sudo x11vnc -storepasswd yourVNCpasswordHERE /etc/x11vnc.pass

1.在编辑器nano(或gedit、leafpad等)中创建一个工作文件。

    sudo nano /etc/init/x11vnc.conf

1.将此粘贴到文件中。

    start on login-session-start

    脚本

    /usr/bin/x11vnc -xkb -forever -auth /var/run/lightdm/root/:0 -display :0 -rfbauth /etc/x11vnc.pass -rfbport 5900 -bg -o /var/log/x11vnc.log

    结束脚本

1.保存该文件。你为Upstart事件_login-session-start_创建了一个作业。 1.重新启动Ubuntu。

就这样了!现在你应该可以在登录前与任何VNC客户端连接。

评论(3)