如何使用图形用户界面连接到Google Compute Engine虚拟服务器?

10

我正在测试Google Compute Engine,创建了一个Ubuntu操作系统的虚拟机。当我点击"Connect SSH"按钮连接时,它会打开一个控制台窗口。

那是您得到的连接吗?

如何打开一个真正有GUI界面的屏幕?我不想要控制台。

4个回答


7
你需要将虚拟机的X11会话转发到本地计算机。这在Unix和Linux堆栈网站上已经讨论过了:

https://unix.stackexchange.com/questions/12755/how-to-forward-x-over-ssh-from-ubuntu-machine

由于您正在连接到一个预计运行计算任务的服务器,因此可能没有安装X11服务器。您可能需要安装X11及其类似物。您可以按照这里的说明进行操作:

https://help.ubuntu.com/community/ServerGUI

最近我需要做这件事,所以我会在这里简要地写出所需的更改:

配置服务器

$ sudo vim /etc/ssh/sshd_config

确保X11Forwarding yes已存在。如果更改了设置,请重新启动ssh守护进程:

$ sudo /etc/init.d/sshd restart

配置客户端。
$ vim ~/.ssh/config

请确保主机上存在ForwardX11 yes。例如:

Host example.com
    ForwardX11 yes

转发X11

$ ssh -X -C example.com
...
$ gedit example.txt

可信X11转发

http://dailypackage.fedorabook.com/index.php?/archives/48-Wednesday-Why-Trusted-and-Untrusted-X11-Forwarding-with-SSH.html

你可能希望启用可信转发,如果应用程序无法使用不受信任的转发,你可以通过在 ~/.ssh/config 文件中使用 ForwardX11Trusted yes 来永久启用。你也可以使用 -Y 参数代替 -X 参数来为单个连接启用可信转发。

嘿,感谢你的帮助!我刚刚在你发给我的链接中完成了X11服务器安装下的两个步骤。我已经运行了这两个命令,似乎没有出现任何错误。但是现在该怎么办? - Assassinbeast
在服务器上安装X11服务器后,您需要通过转发X11会话将其连接到本地计算机。请查看第一个链接。 - Matthew Franglen

4
这些说明是为了在Ubuntu 16.04 LTS上设置LXDE而编写的(我使用SSH端口转发而不是在VM实例防火墙中开放端口5901)
1. 使用GCP控制台构建新的Ubuntu VM实例
2. 使用Google Cloud Shell连接到您的实例
gcloud compute --project "project_name" ssh --zone "project_zone" "instance_name"

3. 安装必要的软件包

sudo apt update && sudo apt upgrade
sudo apt-get install xorg lxde vnc4server

4. 设置VNC服务器(您将被要求为VNC服务器提供密码)

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

6. 重新启动您的实例(这将返回您到 Google 云 Shell 提示符)

sudo reboot

7. 使用 Google Cloud Shell 下载文件功能下载存储在 $HOME/.ssh/google_compute_engine 的自动生成的私钥,并将其保存到本地机器上*****

cloudshell download-files $HOME/.ssh/google_compute_engine

8. 从本地机器使用您在步骤7下载的私钥,SSH到您的VM实例(转发端口5901)

ssh -L 5901:localhost:5901 -i "google_compute_engine" username@instance_external_ip -v -4

9. 在您的VM实例中运行vncserver

vncserver -geometry 1280x800  

10. 在您的本地计算机的远程桌面客户端(例如Remmina)中,将服务器设置为localhost:5901,协议设置为VNC


注意1:检查vncserver是否正常工作,请使用以下命令:

netstat -na | grep '[:.]5901'
tail -f /home/user_id/.vnc/instance-1:1.log

注意2:要重新启动vncserver,请使用:

sudo vncserver -kill :1 && vncserver

*****第一次通过Google云Shell连接时,公钥和私钥会自动生成并存储在云Shell实例中的$HOME/.ssh/

ls $HOME/.ssh/
google_compute_engine  google_compute_engine.pub  google_compute_known_hosts

公钥应添加到VM实例中的home/*user_id*/.ssh/authorized_keys(当您第一次从Google Cloud Shell SSH到VM实例时,这将自动完成,即在步骤2中)。您可以在实例元数据中确认此操作。

我对第七条指令感到困惑:“使用Google Cloud Shell下载文件功能,下载存储在$HOME/.ssh/google_compute_engine的自动生成的私钥,并将其保存在本地计算机上”。我的实例没有在$HOME/.ssh/google_compute_engine创建文件。我有一个本地文件,但没有远程文件。 - Nathan majicvr.com

2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接