我需要从运行 Windows 的家用计算机访问学校的一台 Linux 服务器。而且我需要远程访问它们上的图形桌面(X 服务器),而不仅仅是 shell。
该问题包括 3 台具有不同设置的 Linux 服务器。我对其中任何一个都没有管理员权限,也无法更改这些设置。这 3 个服务器分别是 Aisa、Lethe 和 Aura(这里有人喜欢希腊神话)。所有这些都是学校本地网络的一部分。
我需要在 Lethe 或 Aura 上访问图形界面,其中任何一个都可以。
这是我发现的:
- VPN 等服务的端口在 3 个中的任何一个上都不可用
- Lethe 和 Aisa 允许 SSH,但 Aura 不允许。当我使用 Putty SSH 到 Aisa 或 Lethe 时,我仍然可以访问 Aura,然后使用
ssh aura
. - 我努力了星铭程序允许通过 SSH 从 Windows 图形连接到 Linux。我只能通过这种方式连接到 Aisa(为什么不能连接到 Lethe?!Putty 在那里工作)。
那么我可以尝试如何从我的 Windows 计算机获得与 Lethe 或 Aura 的图形连接呢?非常欢迎任何建议。
编辑
以下代码显示了运行后如何从 Aura 断开连接并返回 Aisa vncserver
:
aisa:/home/user>$ ssh aura
Last login: Sat Oct 13 00:00:00 2012 from aisa.domain.com
aura:/home/user>$ module add vnc
aura:/home/user>$ vncserver
New 'aura.domain.com:1 (user)' desktop is aura.domain.com:1
Starting applications specified in /home/user/.vnc/xstartup
Log file is /home/user/.vnc/aura.domain.com:1.log
aura:/home/user>$ Connection to aura closed by remote host.
Connection to aura closed.
aisa:/home/user>$
编辑2/home/user/.vnc/aura.domain.com:1.log
执行命令后 文件内容vncserver
:
aura:/home/user>$ cat /home/user/.vnc/aura.domain.com:1.log
/packages/run/vnc-4.1.2/Xvnc: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory
/home/user/.vnc/xstartup: line 4: xsetroot: command not found
/home/user/.xsession: line 15: xset: command not found
vncconfig: unable to open display "aura.domain.com:1"
/home/user/.xsession: line 42: xmodmap: command not found
Module xv
Module modules
Module viewers
Module WindowMaker-0.80.2
Module mozilla
ModuleCmd_Load.c(199):ERROR:105: Unable to locate a modulefile for 'mozilla'
stty: standard input: For this device invalid ioctl
wmaker: error while loading shared libraries: libtiff.so.3: cannot open shared object file: No such file or directory
注意:我已经翻译了一些以捷克语显示的字符串(Aura 正在运行捷克语版本的 Red Hat)
答案1
您可以尝试使用VNC X服务器。它使用非特权端口进行通信,并且可以在没有任何 root 特权的情况下运行。为了避免构建 VNC,请找出正在使用的发行版包含的端口(有许多选项TigerVNC
、OpenVNC
、RealVNC
等)。
例如,Fedora 17 有 Tigervnc-server-minimal 软件包,其中包含启动 VNC 服务器所需的一切:
/usr/bin/Xvnc
/usr/bin/vncconfig
/usr/bin/vncpasswd
/usr/share/man/man1/Xvnc.1.gz
/usr/share/man/man1/vncconfig.1.gz
/usr/share/man/man1/vncpasswd.1.gz
下载它,解压二进制文件并将它们放入 ~/bin 文件夹中以方便使用。
首先,您需要vncpasswd
在每个系统上运行一次来设置访问 vnc 服务器实例的密码。
然后通过命令启动服务器本身Xvnc
并记下它启动的显示内容(它将在标准输出上打印出信息)。
然后,您将设置一个 TCP 端口转发到putty
编号为 的端口5900+<display number>
,例如,为了显示,:1
您应该创建一个到端口 5901 的隧道:
putty -ssh -L5901:127.0.0.1:5901 user@host
然后启动虚拟网络查看器localhost:1
并连接到Windows 盒子上的显示屏。
完成后不要忘记停止 Xvnc 服务器,这样就不会浪费服务器上的资源:
killall Xvnc
aura 的情况有点复杂,因为你无法直接登录。如果您的一台服务器允许将隧道设置为 LAN 中的任何计算机,则只需创建正确的隧道,例如:
putty -ssh -L5901:<ip-of-aura>:5901 user@host
否则,您可以使用 aura 启动 ssh 会话,并从位于 aisa 或 Lethe 的远程 shell 进行端口转发:
ssh -L5901:127.0.0.1:5901 aura
答案2
VNC 并不是运行 GUI 程序的最简单方法。与直接远程 X 方法相比,它具有额外的好处,例如如果连接断开,则不会终止程序,但它需要在远程端运行更多程序。我推荐 Xming + PuTTY 或 Xming + Cygwin SSH 作为简单的方法。
运行 Xming 服务器,然后运行 PuTTY,告诉它转发 X。由于您可以在 Aisa 上运行 X 程序,因此您已经让该部分正常工作了。确保您也启用了到 Lether 和 Aura 的 X 转发。
这在 Lethe 上不起作用的原因可能是 X 转发被禁用,或者可能是它缺少一些库。检查DISPLAY
SSH 会话中环境变量的值( echo $DISPLAY
)。你应该看到类似的东西localhost:10.0
。如果该值为空,则X转发失败。这可能是因为它已被系统管理员禁用。检查 SSH 服务器配置,通常在/etc/sshd_config
或中/etc/ssh/sshd_config
。它应该包含该行X11Forwarding yes
。如果没有,请要求您的系统管理员添加它(这样做不会给服务器带来安全风险,因为客户承担所有风险,并且无论如何都可以手动设置 - 关闭默认选项没有任何意义,但这就是默认 OpenSSH 配置中的情况)。
如果服务器上禁用了 X11 转发,您仍然可以使其工作,但这需要一些努力。您需要设置远程端端口 6010 到本地主机上端口 6000 的端口转发:端口 6000+氮对应DISPLAY
值.相应地设置环境变量,例如端口 6010。如果端口 6010 在 Lethe 上使用,请选择一个不同的端口。然后您需要将 X cookie 复制到远程系统。我不知道如何用Xming提取cookie。在服务器端,运行(32位十六进制数为cookie值)。:N.0
DISPLAY
export DISPLAY=localhost:10
xauth add localhost:10 0123456789abcdef0123456789abcdef
对于 Aura,请使用 SSH 隧道。告诉 PuTTY 连接到 Aisa(启用代理和 X11 转发),然后ssh -X
在那里运行命令。