如何在 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 将 postgresql 数据移动到 Ubuntu 上的另一个目录?
将 Amazon EC2 EBS Ubuntu 迁移到 Microsoft Azure