-X 标志(X11 转发)似乎在 Windows 中不起作用

-X 标志(X11 转发)似乎在 Windows 中不起作用

我在 Windows 8.1 中使用 Open SSH(OpenSSH_6.6.1p1、OpenSSL 1.0.1i 2014 年 8 月 6 日)。 X11 转发似乎不起作用。 DISPLAY 环境变量似乎未设置。

例如,如果我使用 BitVise 或 Putty 进行连接并运行 env,我会看到:

[marko@vm:~]$ env
XDG_SESSION_ID=6
TERM=xterm
SHELL=/bin/bash
SSH_CLIENT=192.168.1.174 61102 22
SSH_TTY=/dev/pts/0
USER=marko
MAIL=/var/mail/marko
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
PWD=/home/marko
LANG=en_CA.UTF-8
NODE_PATH=/usr/lib/nodejs:/usr/lib/node_modules:/usr/share/javascript
SHLVL=1
HOME=/home/marko
LANGUAGE=en_CA:en
LOGNAME=marko
SSH_CONNECTION=192.168.1.174 61102 192.168.1.64 22
XDG_RUNTIME_DIR=/run/user/1000
DISPLAY=localhost:10.0
_=/usr/bin/env

如果我改用 OpenSSH (ssh -X marko@vm):

[marko@vm:~]$ env
XDG_SESSION_ID=8
TERM=cygwin
SHELL=/bin/bash
SSH_CLIENT=192.168.1.174 61150 22
SSH_TTY=/dev/pts/1
USER=marko
MAIL=/var/mail/marko
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
PWD=/home/marko
LANG=en_CA.UTF-8
NODE_PATH=/usr/lib/nodejs:/usr/lib/node_modules:/usr/share/javascript
SHLVL=1
HOME=/home/marko
LANGUAGE=en_CA:en
LOGNAME=marko
SSH_CONNECTION=192.168.1.174 61150 192.168.1.64 22
XDG_RUNTIME_DIR=/run/user/1000
_=/usr/bin/env

答案1

DISPLAY在客户端设置了环境变量吗?我不确定您使用的是哪种 shell,但对于 Bourne shell 衍生品(如 bash),请尝试:

export DISPLAY=127.0.0.1:0
ssh -X marko@vm

或者,如果您使用 cmd.exe:

set DISPLAY=127.0.0.1:0
ssh -X marko@vm

或者,如果您使用的是 powershell.exe:

$env:DISPLAY = '127.0.0.1:0'
ssh -X marko@vm

答案2

当您运行时ssh -X remotehost,您将被DISPLAY=localhost:10呈现给远程主机。ssh侦听该端口并将流量转发回调用系统,使用其原始值来DISPLAY确定服务器地址。

您的本地系统上可能存在DISPLAY=:0。如果没有,则默认为 。这指示本地系统使用 UNIX 域套接字与显示器通信。不幸的是,XmingWindows 上没有设置该 UNIX 域套接字,因此您的sshX11 转发会失败并出现以下错误:

$ export DISPLAY=:0
$ ssh -X remotehost xlogo
connect /tmp/.X11-unix/X0: No such file or directory
Error: Can't open display: localhost:10.0

解决办法——至少就目前而言Xming——相当简单。修改该DISPLAY变量以引用侦听 TCP 套接字而不是 UNIX 域套接字。

$ export DISPLAY=localhost:0
$ ssh -X remotehost xlogo

您可能需要调整您的Xming配置以侦听本地 TCP 端口 6000。以下是我的开始方式Xming

Xming.exe :0 -clipboard -multiwindow

以下是确认正在Xming侦听端口 tcp/6000 的证据:

$ netstat -na | grep ':6000 .*LISTEN'
  TCP    0.0.0.0:6000           0.0.0.0:0              LISTENING

答案3

这对我有用:在 PowerShell 中设置环境变量:

$env:DISPLAY="127.0.0.1:0"

然后ssh -Y

答案4

在 Powershell 中运行以下命令:

setx 显示“本地主机:0.0”

之后重新启动powershell(非常重要!)

使用 powershell 和 ssh -Y username@computer 进行连接

注意:确保使用 -Y 进行 ssh 启用远程图形

相关内容