我正在尝试设置一些自动化脚本来设置 Linux 环境。我想启用远程桌面共享,而用户不必实际使用 GUI 来执行此操作。我的计划是编写一个批处理脚本,如果可能的话,它可能会编辑一些文件以自动执行此操作。
我正在使用 Fedora 16 和 Gnome。
任何有关编辑什么文件的提示将不胜感激。
答案1
如果我理解正确的话:您想按原样远程共享 gnome 或其他环境,那么实现此目的的最简单方法是使用 x11vnc。它共享真实的 X11 服务器,就像用户登录后一样:
x11vnc -display :0
或者,如果您希望登录后运行 vnc 服务器,您可以使用以下脚本实现自动化:
#!/bin/bash
/usr/bin/x11vnc -nap -wait 50 -noxdamage -passwd PASSWORD -display :0 -forever -o /var/log/x11vnc.log -bg
您可以将此脚本放置在 gnome 的启动程序中,以便在用户登录时自动运行。请注意,此脚本并不安全,因为任何可以读取该文件的人都可以清楚地看到会话 PASSWORD 变量,并且任何知道密码的人都可以连接到 vnc 会话(在本例中,密码是远程连接时询问的 8 个符号单词)。如果您想要更安全的连接,请搜索如何进行 vnc ssh 隧道。
答案2
我最喜欢的远程连接方法是使用 vino。它与 x11vnc 类似,但我发现它更容易设置(尽管我通常使用 GUI)。启用 Vino 后,gnome 设置为在每次启动时接受活动会话(当前登录的会话)的 vnc 连接。屏幕上打开的任何窗口或应用程序都可以在 vnc 连接中查看。
在正常情况下(例如,通过 GUI),通过运行来设置它就足够了
$ vino-preferences
在没有 GUI 的情况下,必须使用 更改设置gsettings
。就像是
$ gsettings set org.gnome.Vino enabled true
$ gsettings set org.gnome.Vino view-only true
$ gsettings set org.gnome.Vino authentication-methods "['vnc']"
$ gsettings set org.gnome.Vino prompt-enabled false
$ gsettings set org.gnome.Vino require-encryption true
将启用具有合理值的远程桌面。您可以通过打开dconf-editor
并导航到 来查看完整的选项列表及其效果的描述desktop.gnome.remote-access
。
如果您的计算机有多个用户,则需要为每个用户设置 Vino。
要连接到远程会话,您可以使用任何标准 vnc 客户端。但是,您必须将端口 5900 从路由器固件转发到要连接的计算机。或者,如果您还允许与这些计算机进行 ssh 连接,则通过 ssh 隧道使用 vnc 可能会更容易、更安全。从您的本地计算机:
ssh -L 5900:localhost:5900 <remote server>
然后打开 vnc 客户端并连接到 127.0.0.1:5900 并使用远程服务器的用户名和密码登录。
答案3
我可以使用以下脚本从远程 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,因此这就是export DISPLAY
需要该部分的原因。我认为在此之后您仍然需要登录到实际 Ubuntu 机器上的桌面才能连接 VNC。
dump 命令只是为了确认所有设置都已生效,您实际上并不需要它。
答案4
如果我需要访问我的桌面,我通常只需通过 SSH 登录并运行“x11vnc”,然后使用 VNC 进行连接。