使用ssh -X
连接到两台服务器时,发现了一件奇怪的事情。
一台服务器上安装了Ubuntu16.04,另一台服务器上安装了Ubuntu 18.04。我将以下简单的shell脚本上载到两个服务器:
#!/bin/bash
tab=" --tab"
options=()
cmds[1]="echo Banana"
cmds[2]="echo Cat"
for i in 1 2; do
options+=($tab -e "bash -c '${cmds[i]} ; bash'" )
done
gnome-terminal "${options[@]}"
exit 0
您知道此脚本将在服务器上打开带有两个选项卡的新终端窗口。一个选项卡将打印“香蕉”,另一个选项卡将打印“猫”。
然后,我使用ssh -X
远程登录第一台服务器(Ubuntu 16.04)并在服务器上执行此脚本,我在电脑上打开了一个带有两个标签的新终端。那就是我在自己的计算机上看到服务器的远程终端GUI。但是,如果我在第二台服务器(Ubuntu18.04)上重复这些步骤,则计算机上什么也没有显示。
使用gedit
登录两个服务器时,我在ssh登录终端上执行命令ssh -X
,两种情况下我都可以在计算机上看到GUI。
我想Ubuntu 18.04无法通过ssh -X
将终端的GUI传输到我的电脑。我对此很困惑。您能解释一下原因吗?顺便说一句,在这种情况下如何查看服务器的终端GUI?非常感谢!
答案 0 :(得分:0)
ssh -X
不传输终端。它隧道 X11连接。
X11的核心是基于网络的显示协议。程序(X客户端)连接到X服务器(在您的 local 计算机上运行的程序),并指示它创建窗口并向其中绘制内容。 除X服务器外,没有其他任何形式的图形再现!
ssh -X
的运行方式不同于Windows Remote Desktop,因为在远程计算机上运行的是实际的图形环境。因此,如果您创建两个单独的ssh -X
连接(甚至可能来自不同的计算机),则这些连接是彼此完全独立的。 因此,您无法使用ssh -X
与先前存在的X会话进行连接!
您想要的是 Xvnc 或 Xpra ,其中图形环境实际上是在远程计算机上运行的,并且仅将输出传输到本地计算机。 / p>