通过VPN使用Xming X Window Server

我在运行Windows XP的笔记本电脑上安装了Xming X Window Server以连接到一些UNIX开发服务器。

当我直接连接到办公室的公司网络时,它工作正常。但是,当我通过VPN远程连接到网络时,它不起作用。

当我远程连接时启动Xming时,不显示任何终端窗口。

我认为这可能与DISPLAY环境变量在连接时未正确设置到笔记本电脑的IP地址有关。

我注意到,当我在远程连接时执行ipconfig时,我的笔记本电脑有两个IP地址,一个是从公司网络分配给我的IP地址,另一个是我在本地网络上为我设置的本地IP地址调制解调器/路由器。

我需要在Xming中进行一些配置更改以支持其通过VPN使用吗?

0

7 答案

感谢@Stephen和@Greg Castle的帮助,使用它我设法解决了我的问题。

为他人提供基本指导(从头开始):

在Windows PC上使用Xwindows通过VPN连接到UNIX服务器

您需要从什么开始:

该怎么办:

  1. Install both of the above on your Windows PC

  2. From the Windows start menu select: Programs -> Xming -> Xming

  3. Run the Putty.exe program in the location you downloaded it to

  4. In the PuTTY configuration screen do the following:

    • Set the IP address to be the IP address of your UNIX server

    • Select the SSH Protocol radio-button

    • Click the SSH : Tunnels category in the left hand pane of the configuration screen

    • Click the Enable X11 forwarding check-box

    • Click the Open button

    • Logon as usual to your UNIX server

    • Check the directory containing the X windows utilities are in your path, e.g. /usr/X/bin on Solaris

    • Run your X Windows commands in your putty window and they will spawn new windows on your desktop

0
额外

有可能是X身份验证,X服务器绑定到接口或DISPLAY变量。我自己不使用Xming,但有一些常见现象需要检查。您可以手动验证DISPLAY变量的一项测试是正确的:

  1. 启动您的VPN。运行ipconfig确保你有两个你提到的IP地址(你的本地IP和你的VPN IP)。
  2. 启动Xming。运行'netstat -n'来查看它是如何绑定到界面的。你应该看到一些说localIP:6000或VPNIP:6000的东西。它可能不是6000,但有可能会是这样的。如果没有VPNIP:6000,它可能只与你的本地IP甚至127.0.0.1绑定。这可能无法通过VPN。检查是否有一些Xming设置使其绑定到其他或所有接口。
  3. 如果您看到VPNIP:6000或类似的东西,请注意它的含义和远程shell到您的UNIX主机(希望如ssh,如果不是您必须获得文本终端的话)。
  4. 在UNIX终端上键入'echo $ DISPLAY'。如果没有显示任何内容,请尝试'export DISPLAY = VPNIP:0.0',其中VPNIP是您的VPN IP地址,0.0是您在步骤3中看到的端口减去6000,最后为0.6(即6000 = 0.0,6010 = 10.0)。
  5. 在UNIX主机上运行'xclock'或'xterm'来查看它是否运行。错误消息应该是信息性的。它会告诉你,它无法连接到主机(连接问题)或验证失败(你需要在主机和本地机器上协调Xauth或在本地机器上协调Xhosts)。

如果你有一个本地受保护的网络,并且你正在通过一个VPN,打开Xhosts(对于所有主机或类似的东西都是+)并不算太坏。希望这会让你开始追踪问题。另一个通常用于VPN或简单ssh连接的选项通常是ssh隧道或通过ssh进行X11转发。这通过将UNIX主机上的端口重定向到X服务器框上的本地端口来模拟与本地盒上的X服务器的连接。您的显示器通常会像本地6010端口的localhost:10.0一样。

X可以成立,但一旦你掌握了它,它通常会很好用。

0
额外

您可能有更好的运气通过SSH执行 X11转发,而不是摆弄您的DISPLAY直接变量。 X11使用SSH进行转发是安全的,并使用现有的SSH连接进行隧道传输,因此通过VPN工作应该不成问题。

Fortunately this is fairly straightforward with Xming. If you open your connection from within Xming (e.g. the plink option) I believe it sets up X11 forwarding by default. If you connect using another SSH client (e.g. PuTTY) then you simply need to enable X11 forwarding (e.g. 'ssh -X [email protected]'). In PuTTY the option is under Connection -> SSH -> X11 -> click on 'Enable X11 Forwarding'.

确保Xming在笔记本电脑的后台运行,并执行标准X测试'xclock'。如果您收到“X连接到本地主机:19.0中断(显式终止或服务器关闭)”的消息。那么Xming很可能不会运行。

另外,确保你没有在任何启动脚本中明确地设置你的DISPLAY变量; SSH将为X11隧道设置别名(如localhost:10或localhost:19之上的示例),并自动将DISPLAY设置为该值。重写DISPLAY显然意味着你将不再指向正确的X11隧道。另一方面,没有SSH X11转发设置的其他终端可以使用相同的DISPLAY值并利用该隧道。

我倾向于选择PuTTY选项,但我的几个同事使用Xming内的plink。

0
额外

我没有任何事情,但与Xming有问题。当我能够使用它时,它非常慢(这是通过VPN)。国际海事组织X的目的不是为了通过慢速连接来运行它太琐碎。而通过慢速连接,我的意思是任何少于局域网连接的东西。

我的解决方案是使用x11vnc。它允许您通过VNC访问现有的X11会话。我只是通过VPN ssh进入我的盒子并启动:

$ x11vnc -display :0

这样我就可以访问我在白天打开的所有东西。然后当我不在时,我只是在终端退出( Ctrl - C )关闭x11vnc。

0
额外
Xming在局域网上也非常慢......:/
额外 作者 Homer6,

没有确切的问题,但我认为您需要查看xhost并确保允许vpn远程将数据发送到x服务器。

This link might help: http://www.straightrunning.com/XmingNotes/trouble.php

0
额外

I got Xming and PuTTY working with Cisco VPN by replacing the PuTTY configuration in Connection > SSH > X11 > X display location, localhost:0.0, with VPNIP:0.0. VPNIP can be seen in the VPN statistics client address information by left-clicking on the VPN client lock icon and choose Statistics....

我没有使用远程主机上的DISPLAY环境变量。但是,像其他人一样,我在远程主机上修改了sshd_config,添加了这些行:

X11Forwarding yes
X11DisplayOffset 10
X11UseLocalhost yes
AddressFamily inet
0
额外

我在Windows 10机器上遇到了与Xming和Putty相同的问题,并找到了解决方案这里。我已经解决了问题,只需将隧道添加到PuTTY中的会话即可。但首先你需要检查;

  • sshd_config under /etc/ssh (in rhel7).
  • Enable X11 forwarding at left navigation pane Connections > SSH > X11
  • iptables under /etc/sysconfig/ (in rhel7). If ports are blocked and you have permission, open the ports for 6000. I have added below line before first reject line to open ports from 6000 to 6003. It may be more specific in your case.

    -A INPUT -m state --state NEW -m tcp -p tcp -m multiport --dports 5901:5903,6000:6003 -j ACCEPT

然后;

  • Go to Connections > SSH > Tunnels in PuTTY and add a tunnel with Source Port=6000, Destination=127.0.0.1:6000 and check Remote radio button. Then click the Add button.
  • After your SSH connection established, set your DISPLAY variable manually with the command below:
    export DISPLAY=127.0.0.1:0.0

More Information;
If you set DISPLAY variable as 127.0.0.1:1.0, it will communicate over 6001 port . In this case, you need to add another tunnel for port number 6001.

0
额外