当前位置: 首页>>技术问答>>正文


从命令行启用远程VNC?

, ,

问题描述

我有一台运行Ubuntu 10.04的计算机,并且正在运行默认的VNC服务器Vino

我有第二个Windows框,它运行VNC客户端,但没有任何X11功能。我是从Windows主机进入Ubuntu主机的,但我忘了在Ubuntu主机上启用VNC访问。

在Ubuntu主机上,有没有办法从Ubuntu命令行启用VNC连接?

更新:

正如@koanhead在下面所述,没有vino的手册页(例如man -k vinoinfo vino没有返回任何内容),而vino --help没有显示任何帮助)。

最佳解决方法

刚刚跑步

/usr/lib/vino/vino-server

应该做的工作。

一旦您有权访问您的服务器,我建议您将其添加到自动启动的应用程序,以便始终启动它。

您可能希望更改一些设置:

vino-preferences

在远程计算机上运行vino-preference时要非常小心,如果取消选中“允许其他用户控制您的桌面”,您将无法检查它。

或编辑:

~/.gconf/desktop/gnome/remote_access/%gconf.xml

这是一个示例文件:

<?xml version="1.0"?>
<gconf>
    <entry name="vnc_password" mtime="1289267042" type="string">
        <stringvalue>cXdlcnR5</stringvalue>
    </entry>
    <entry name="view_only" mtime="1289262982" type="bool" value="false"/>
    <entry name="prompt_enabled" mtime="1254965869" type="bool" value="false"/>
    <entry name="authentication_methods" mtime="1289267034" type="list" ltype="string">
        <li type="string">
            <stringvalue>vnc</stringvalue>
        </li>
    </entry>
    <entry name="enabled" mtime="1289263574" type="bool" value="true"/>
</gconf>

注意,密码是base64编码的。对于此文件,密码为qwerty。我在一些论坛上看到人们已成功改变它,但我对它有疑问。

这是一个在线base64编码器:

http://www.motobit.com/util/base64-decoder-encoder.asp

次佳解决方法

简答:

gconftool-2 --set --type=bool /desktop/gnome/remote_access/enabled true

如接受的答案所示,如果vino未在远程计算机上启动,请使用

/usr/lib/vino/vino-server

长答案和更多信息:

如上所述,可以从vino-preferences看到当前内置远程访问服务器(vino)的设置子集。使用gconf-editor命令可以看到完整的gconf标志列表,该命令列在/desktop /gnome /remote_access下。您还可以使用此命令(或其中的变体)查看其他remote_access键:

gconftool-2 -a /desktop/gnome/remote_access

(无论出于何种原因,-R也可以使用。)

您还可以通过--long-docs arg获取架构密钥文档。

例如,对于alternative_port键:

gconftool-2 --long-docs /desktop/gnome/remote_access/alternative_port

       The port which the server will listen to if the
       'use_alternative_port' key is set to true.
       Valid values are in the range from 5000 to 50000.

因此,例如,以下是如何通过命令行更改默认端口:

gconftool-2 --set --type=bool /desktop/gnome/remote_access/use_alternative_port true
gconftool-2 --set --type=int /desktop/gnome/remote_access/alternative_port 5999

gconftool将为您提供给定目录下的密钥。这是’remote_access’部分:

gconftool-2 -a /desktop/gnome/remote_access
 use_upnp = false
 vnc_password = 
 authentication_methods = [vnc]
 network_interface = 
 require_encryption = false
 disable_background = false
 enabled = true
 use_alternative_port = false
 mailto = 
 disable_xdamage = false
 lock_screen_on_disconnect = false
 icon_visibility = always
 view_only = false
 prompt_enabled = true
 alternative_port = 5900

以下是如何列出/desk /gnome /remote /access下的所有模式文档(通过命令行 /bin /bash):

for key in ` gconftool-2 -a /desktop/gnome/remote_access | awk '{print $1}'  ` ; do echo $key ; gconftool-2 --long-docs /desktop/gnome/remote_access/$key ; done

第三种解决方法

我还想用命令行启用vino而不进入vino-preferences。

当我启动/usr/lib/vino/vino-server时,它说我没有启用桌面共享服务。

使用Unity gconftool不再可用。我们必须通过gsettings来完成。

首先,启用vino:

gsettings set org.gnome.Vino enabled true

然后开始vino:

/usr/lib/vino/vino-server

现在您可以远程访问您的计算机。

如果你想看到Vino可用的所有配置:

gsettings list-keys org.gnome.Vino

第四种方法

在Ubuntu 14.04上,我发现以下变体对我有用:

export DISPLAY=:0
gsettings set org.gnome.Vino enabled true
gsettings set org.gnome.Vino prompt-enabled false
gsettings set org.gnome.Vino require-encryption false
/usr/lib/vino/vino-server

如果这不起作用,您的X会话可能正在运行:0以外的其他内容,因此快速ps aux | grep X应显示:1:2

第五种方法

为什么,对于所有在这个艰难世界中有益的人的爱,是否没有人进入vino或vino-server或 dpkg -L vino输出中列出的任何命令?就此而言,为什么要在Ubuntu系统上安装任何软件包,至少在相关命令中省略了手册页?好吧,咆哮。到目前为止我找到的最佳答案是:http://ubuntuforums.org/archive/index.php/t-266981.html

我真的希望这会有所帮助,我希望将来Ubuntu社区能够记录所有这些孤立的命令。 “易于使用”并不意味着放弃命令行,它当然并不意味着放弃易于访问的文档。 &LT; /叽&GT;

第六种方法

由于显示器的错误等原因,这似乎无法通过ssh远程工作。这是我做的:

export DISPLAY=:0.0 && /usr/lib/vino/vino-server

现在大部分都在工作!

第七种方法

我能够使用以下脚本从远程ssh连接设置新的Ubuntu 16.04安装:


#!/bin/bash
export DISPLAY=:0
read -e -p "VNC Password: " -i "ubuntu" password
dconf write /org/gnome/desktop/remote-access/enabled true
dconf write /org/gnome/desktop/remote-access/prompt-enabled false
dconf write /org/gnome/desktop/remote-access/authentication-methods "['vnc']"
dconf write /org/gnome/desktop/remote-access/require-encryption false
dconf write /org/gnome/desktop/remote-access/vnc-password \"\'$(echo -n $password | base64)\'\"
dconf dump /org/gnome/desktop/remote-access/
sudo service lightdm restart

引用对于任何字符串设置(引号内的单个刻度)都很重要。要使dconf能够写入,它需要访问XWindows,这就是为什么需要导出DISPLAY部分。我认为你仍然需要登录到实际的Ubuntu机器上的桌面以便在此之后与VNC连接。 dump命令只是用于确认所有设置保持不变,你真的不需要它。

如果您希望始终保持显示,可以选择执行此操作:


dconf write /org/gnome/desktop/screensaver/lock-enabled false
dconf write /org/gnome/desktop/screensaver/ubuntu-lock-on-suspend false
dconf write /org/gnome/desktop/session/idle-delay "uint32 0"

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/1220.html,未经允许,请勿转载。