如何在 Amazon EC2 Ubuntu 服务器上设置 GUI

Posted

技术标签:

【中文标题】如何在 Amazon EC2 Ubuntu 服务器上设置 GUI【英文标题】:How To Set Up GUI On Amazon EC2 Ubuntu server 【发布时间】:2014-10-28 17:42:27 【问题描述】:

我正在使用只有命令行界面的亚马逊 Ubuntu EC2 实例。我想为该服务器设置 UI 以使用远程桌面工具进行访问。有什么方法可以将 GUI 应用于 EC2 实例?

【问题讨论】:

@user3071284 这篇文章很棒,只是少了一步 - 在您的实例安全组中打开 RDP 端口 (3389)。 很遗憾,该链接现在不可用。 我的解决方案是确保 xstartup 文件是可执行的:chmod +x ~/.vnc/xstartup 【参考方案1】:

这是可以做到的。以下是设置 GUI 的步骤

使用密码登录创建新用户

sudo useradd -m awsgui
sudo passwd awsgui
sudo usermod -aG admin awsgui

sudo vim /etc/ssh/sshd_config # edit line "PasswordAuthentication" to yes

sudo /etc/init.d/ssh restart

在 AWS 上设置基于 ui 的 ubuntu 机器。

在安全组中打开端口 5901。然后 ssh 到服务器实例。运行以下命令安装 ui 和 vnc 服务器:

sudo apt-get update
sudo apt-get install ubuntu-desktop
sudo apt-get install vnc4server

然后运行以下命令并输入vnc连接的登录密码:

su - awsgui

vncserver

vncserver -kill :1

vim /home/awsgui/.vnc/xstartup

然后按 Insert 键,用键盘箭头滚动文本文件,然后删除下面两行开头的井号 (#) “取消对普通桌面的以下两行的注释。”在第二行添加“sh”,因此该行显示为

exec sh /etc/X11/xinit/xinitrc. 

完成后,按键盘上的 Ctrl + C,输入 :wq 并按 Enter。

然后再次启动 vnc 服务器。

vncserver

您可以从这里下载xtightvncviewer 以查看桌面(适用于Ubutnu)https://help.ubuntu.com/community/VNC/Clients

在 vnc 客户端中,提供公共 DNS 加“:1”(例如 www.example.com:1)。输入 vnc 登录密码。确保使用正常连接。不要使用密钥文件。

此处提供其他指南:http://www.serverwatch.com/server-tutorials/setting-up-vnc-on-ubuntu-in-the-amazon-ec2-Page-3.html

Mac VNC 客户端可以从这里下载:https://www.realvnc.com/en/connect/download/viewer/

在控制台打开端口

sudo iptables -A INPUT -p tcp --dport 5901 -j ACCEPT

如果出现灰色窗口问题。主要是因为不同用户的“.vnc/xstartup”文件。所以在同一用户而不是“awsgui”用户上运行 vnc 服务器。

vncserver

【讨论】:

我认为你在sudo usermod -aG admin awsgui之后缺少su - awsgui 请记住在您的安全组中打开端口 5901 以使其正常工作。感谢您的详细回答! 尝试了几个指南,包括这个,我只得到灰色背景 - 没有 ubuntu 桌面。 我这样做为我解决了灰色背景digitalocean.com/community/questions/… 如果 vim awsgui/.vnc/xstartup 不起作用,请尝试 vim .vnc/xstartup【参考方案2】:

所以我遵循第一个答案,但是当我连接到它时,我的 vnc 查看器给了我灰屏。我找到了Ask Ubuntu link 来解决这个问题。

与上一个答案的唯一区别是您需要安装这些额外的软件包:

apt-get install gnome-panel gnome-settings-daemon metacity nautilus gnome-terminal

并使用这个 ~/.vnc/xstartup 文件:

#!/bin/sh

export XKL_XMODMAP_DISABLE=1
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS

[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
vncconfig -iconic &

gnome-panel &
gnome-settings-daemon &
metacity &
nautilus &
gnome-terminal &

其他都一样。

在 EC2 Ubuntu 14.04 LTS 上测试。

【讨论】:

这在上一个答案之上对我有用,并且在运行 vnc 命令之前完成了su - awsgui 在遵循大多数关于如何在aws 上使用tightvncserver 设置ubuntu 桌面的教程之后,这一步是必要的。如果没有这一步,所有教程都不适合我。 在执行完这些步骤后,您可能需要重新启动操作系统。我按照这个答案进行操作,必须先重新启动。 我尝试了上述步骤,我可以在 RealVNC 上看到 Ubuntu。但我只能看到终端和桌面。不知何故,缺少其他 UI 部分,如工具栏、应用程序等。是否有任何其他步骤或任何解决方法? 在终端运行以下命令:killall gnome-panel && sudo gnome-panel &【参考方案3】:

适用于 Ubuntu 16.04

1) 安装包

$ sudo apt update;sudo apt install --no-install-recommends ubuntu-desktop
$ sudo apt install gnome-panel gnome-settings-daemon metacity nautilus gnome-terminal vnc4server

2) 编辑 /usr/bin/vncserver 文件并修改如下

找到这一行

"# exec /etc/X11/xinit/xinitrc\n\n".

并在下面添加这些行。

"gnome-session &\n".
"gnome-panel &\n".
"gnome-settings-daemon &\n".
"metacity &\n".
"nautilus &\n".
"gnome-terminal &\n".

3) 使用“vncserver”命令为用户创建VNC密码和vnc会话。

lonely@ubuntu:~$ vncserver
You will require a password to access your desktops.
Password:
Verify:
xauth: file /home/lonely/.Xauthority does not exist
New 'ubuntu:1 (lonely)' desktop is ubuntu:1
Creating default startup script /home/lonely/.vnc/xstartup
Starting applications specified in /home/lonely/.vnc/xstartup
Log file is /home/lonely/.vnc/ubuntu:1.log

现在您可以使用 IP/域和端口 1 访问 GUI

***.com:1

在 AWS 和数字海洋上测试。

对于 AWS,您必须在防火墙上允许端口 5901

终止会话

$ vncserver -kill :1

参考:

https://linode.com/docs/applications/remote-desktop/install-vnc-on-ubuntu-16-04/

请参阅本指南以将永久会话创建为服务

http://www.krizna.com/ubuntu/enable-remote-desktop-ubuntu-16-04-vnc/

【讨论】:

它工作了,但是在重新启动机器后,ssh 停止连接并出现连接超时错误。你知道为什么会这样吗?【参考方案4】:

1) 在 EC2 上启动 Ubuntu 实例。 2) 在实例安全中打开 SSH 端口。 3) 对实例执行 SSH。 4) 执行:

sudo apt-get update    sudo apt-get upgrade

5) 由于您将从 Windows 远程桌面进行连接,因此请编辑 Linux 实例上的 sshd_config 文件以允许密码身份验证。

sudo vim /etc/ssh/sshd_config

6) 将PasswordAuthentication由no改为yes,然后保存退出。 7) 重新启动 SSH 守护程序以使此更改生效。

sudo /etc/init.d/ssh restart

8) 临时获得root权限,将ubuntu用户的密码修改为复杂密码,增强安全性。输入命令 passwd ubuntu 后按回车键,会提示输入两次新密码。

sudo –i
passwd ubuntu

9) 切换回 ubuntu 用户帐户并 cd 到 ubuntu 主目录。

su ubuntu
cd

10) 在您的 Linux 实例上安装 Ubuntu 桌面功能,最后一个命令可能需要 15 分钟才能完成。

export DEBIAN_FRONTEND=noninteractive
sudo -E apt-get update
sudo -E apt-get install -y ubuntu-desktop

11) 安装 xrdp

sudo apt-get install xfce4
sudo apt-get install xfce4 xfce4-goodies

12) 将 xfce4 设为 RDP 连接的默认窗口管理器。

echo xfce4-session > ~/.xsession

13) 将 .xsession 复制到 /etc/skel 文件夹,以便将 xfce4 设置为创建的任何新用户帐户的默认窗口管理器。

sudo cp /home/ubuntu/.xsession /etc/skel

14) 打开 xrdp.ini 文件以允许更改您将连接到的主机端口。

sudo vim /etc/xrdp/xrdp.ini

(xrdp到现在还没有安装。先用sudo apt-get install xrdp安装xrdp,然后编辑上面提到的文件)

15) 查找 [xrdp1] 部分并更改以下文本(然后保存并退出 [:wq])。

port=-1
- to -
port=ask-1

16) 重启 xrdp。

sudo service xrdp restart

17) 在 Windows 上,打开远程桌面连接客户端,粘贴计算机的 Amazon EC2 实例的完全限定名称,然后单击连接。

18) 当提示登录 xrdp 时,确保选择 sesman-Xvnc 模块,并使用您在步骤 8 中创建的新密码输入用户名 ubuntu。启动会话时,端口号为 -1 .

19) 当系统连接时,连接日志屏幕上会显示几条状态消息。请密切注意这些状态消息并记下显示的 VNC 端口号。如果您想稍后返回会话,请在 xrdp 登录对话框的端口字段中指定此编号。

查看更多详情: https://aws.amazon.com/premiumsupport/knowledge-center/connect-to-linux-desktop-from-windows/ http://c-nergy.be/blog/?p=5305

【讨论】:

虽然这在理论上可以回答问题,it would be preferable 在这里包含答案的基本部分,并提供链接以供参考。 我无法在 xrdp.ini 文件中找到 [xrdp1] 部分。【参考方案5】:

对于 LXDE/Lubuntu


1。连接到您的实例(本地转发端口 5901)

ssh -L 5901:localhost:5901 -i "xxx.pem" ubuntu@xxx.amazonaws.com

2。安装包

sudo apt 更新 && sudo apt 升级 sudo apt-get install xorg lxde vnc4server lubuntu-desktop

3。创建/etc/lightdm/lightdm.conf

sudo nano /etc/lightdm/lightdm.conf

4。将以下内容复制并粘贴到 lightdm.conf 并保存

[座位默认值] 允许访客=假 用户会话=LXDE #user-session=Lubuntu

5。设置 vncserver(您将被要求为 vncserver 创建密码)

vncserver sudo echo "lxpanel & /usr/bin/lxsession -s LXDE &" >> ~/.vnc/xstartup

6。重新启动您的实例并重新连接

须藤重启 ssh -L 5901:localhost:5901 -i "xxx.pem" ubuntu@xxx.amazonaws.com

7。启动 vncserver

vncserver -geometry 1280x800

8。在您的远程桌面客户端(例如 Remmina)中,将服务器设置为 localhost:5901,将协议设置为 VNC

【讨论】:

【参考方案6】:

我遇到了同样的问题,最后为自己写了一个操作指南 (https://dugas.ch/lord_of_the_files/run_your_unity_ml_executable_in_the_cloud.html)

这里的回答有助于启动和运行一个解决方案,但我建议了解不同层的基础知识,从而在 Unix 中实现功能正常的 GUI/OpenGL 环境/远程桌面。您是否希望事情在 GPU 或 CPU 上运行也很重要。

在这种心态下,自己启动每个组件可以更清楚地知道做什么。

简而言之,您想要:

启动 x 服务器(GPU / CPU) 启动桌面环境 启动vnc服务器 在 vnc 端口上启用防火墙流量(在 AWS 控制台中)

最棘手的部分是让 x-server 运行,或者直接使用 xorg 使用 nvidia 驱动程序和虚拟屏幕 (GPU) 或使用 Xvfb (CPU)

以 Xvfb (CPU) 为例:

x 服务器
Xvfb :0 -screen 0 1024x768x24 +extension GLX +render -noreset >> xsession.log 2>&1 &
桌面环境
DISPLAY=:0 startxfce4 
vnc 服务器
x11vnc -display :0 -usepw -rfbport 5901 

【讨论】:

以上是关于如何在 Amazon EC2 Ubuntu 服务器上设置 GUI的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Amazon EC2 中设置时区?

如何通过 Amazon EC2 将 postgresql 数据移动到 Ubuntu 上的另一个目录?

将 Amazon EC2 EBS Ubuntu 迁移到 Microsoft Azure

amazon ec2 sudoers 文件 - ubuntu 用户要求输入密码

如何在 Amazon EC2 上创建子域?

Amazon EC2云端服务器的使用方法