我在 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
Run Code Online (Sandbox Code Playgroud)
如果我改为使用 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
Run Code Online (Sandbox Code Playgroud)
yae*_*shi 24
DISPLAY客户端设置环境变量了吗?我不确定您使用的是哪个 shell,但是对于 Bourne shell 衍生物(如 bash),请尝试:
export DISPLAY=127.0.0.1:0
ssh -X marko@vm
Run Code Online (Sandbox Code Playgroud)
或者,如果您使用的是 cmd.exe:
set DISPLAY=127.0.0.1:0
ssh -X marko@vm
Run Code Online (Sandbox Code Playgroud)
roa*_*ima 17
当您运行时ssh -X remotehost,您会看到DISPLAY=localhost:10远程主机。ssh侦听该端口并将流量转发回调用系统,使用其原始值DISPLAY来确定服务器地址。
很可能在您的本地系统上您有DISPLAY=:0. 或者如果你没有,那就是它被默认为。这会指示本地系统使用 UNIX 域套接字与显示器进行通信。不幸的是,Xming在 Windows 上没有设置该 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
Run Code Online (Sandbox Code Playgroud)
修复 - 至少就目前Xming而言 - 相当简单。修改DISPLAY变量以引用侦听 TCP 套接字而不是 UNIX 域套接字。
$ export DISPLAY=localhost:0
$ ssh -X remotehost xlogo
Run Code Online (Sandbox Code Playgroud)
您可能需要调整您的Xming配置以侦听本地 TCP 端口 6000。这是我的开始方式Xming:
Xming.exe :0 -clipboard -multiwindow
Run Code Online (Sandbox Code Playgroud)
这是确认Xming正在侦听端口 tcp/6000 的证据:
$ netstat -na | grep ':6000 .*LISTEN'
TCP 0.0.0.0:6000 0.0.0.0:0 LISTENING
Run Code Online (Sandbox Code Playgroud)
小智 10
这对我有用:在 PowerShell 中设置环境变量:
$env:DISPLAY="127.0.0.1:0"
Run Code Online (Sandbox Code Playgroud)
然后 ssh -Y
| 归档时间: |
|
| 查看次数: |
46997 次 |
| 最近记录: |