如何设置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。

一旦运行,您应该能够使用vdc客户端连接,例如krdc(用于KDE)。 您可能希望使用GNU Screen来保持x11vnc运行,而无需打开ssh会话

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

这是一个示例新手工作,您可以使用它来使其在启动时运行。 它需要放在/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

上面的答案解决了这个问题,虽然对于带有systemd(15.04+)的Ubuntu版本进行了一些修改,如下所示:

  • 利用x11vnc中新的-auth guessfunction – 这有帮助!
  • systemd更新(不是新手)

运行以下命令进行安装:

 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 

这是如何做:

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

     sudo apt-get install x11vnc 
  2. 创建VNC密码文件。

     sudo x11vnc -storepasswd yourVNCpasswordHERE /etc/x11vnc.pass 
  3. 在编辑器nano(或gedit,leafpad等)中创建一个作业文件。

     sudo nano /etc/init/x11vnc.conf 
  4. 将其粘贴到文件中:

     start on login-session-start script /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 end script 
  5. 保存文件。 您为Upstart事件login-session-start创建了一个作业。

  6. 重启Ubuntu。

而已! 您现在应该能够在登录前连接任何VNC客户端。

babelmonks作为bash脚本回答,复制并保存为x11vnc.sh并使用sudo bash /path/to/file/x11vnc.sh运行(抱歉没有足够的代表发表评论)

 #!/bin/bash #install x11vnc & set password apt-get install x11vnc -y x11vnc -storepasswd 123456 /etc/x11vnc.pass #create config file for system service cat > /lib/systemd/system/x11vnc.service <<-EOF [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 [Install] WantedBy=multi-user.target EOF #restart new services & enable on boot systemctl daemon-reload systemctl start x11vnc systemctl enable x11vnc 

使用我的脚本轻松设置: installvncubuntu1604.sh

用法:

 chmod +x ./installvncubuntu1604.sh; sudo ./installvncubuntu1604.sh 

我使用自己的shell: https : //github.com/dvdvideo1234/UbuntuBatches/tree/master/x11VNC

 start on login-session-start script sudo /usr/bin/x11vnc -xkb -auth /var/run/lightdm/root/:0 -noxrecord -noxfixes -noxdamage -rfbauth /var/srv/x11vnc/x11vnc.pass -forever -bg -rfbport  -o /var/srv/x11vnc/x11vnc.log end script 

进入文件:

 /etc/init/x11vnc.conf 

它使它在启动时自动启动,即使在登录屏幕上它也要求输入密码。

安装x11vnc包

 #sudo apt-get install x11vnc 

然后设置密码

 #x11vnc -usepw 

然后为x11vnc创建启动脚本

 #sudo nano /etc/x11vnc.sh 

在文件中:

 /usr/bin/x11vnc -bg -forever -shared -reopen -usepw 

然后保存

 #sudo chmod 777 /etc/x11vnc.sh 

然后将脚本文件添加到Control Center => Startup Application然后单击Add

 > Name-----------x11vnc 

> Command-----

 > Comment------service 

必须为所有用户添加此项

这将在用户登录后运行