Ubuntu Windows10 应用程序 -- X11 转发 -- $DISPLAY 错误

Han*_*ght 7 ssh ubuntu x11 sshd display

我一直在搜索 StackExchange 和其他地方一段时间了。似乎没有任何修复对我有用(或仅修复部分问题)。

我正在尝试进入正在运行的 Raspberry Pi 3Linux raspberrypi 4.9.59-v7+ #1047 SMP Sun Oct 29 12:19:23 GMT 2017 armv71. 我试图将它用作服务器,并将我的 Windows 10 Pro 桌面用作客户端(通过 Ubuntu Windows 10 终端应用程序)。通过 PuTTY 执行此操作,启用 X11 转发,效果很好。但是,通过使用 Ubuntu 应用程序执行此操作ssh -X -v user@server,然后使用 xlogo 对其进行测试,只会出现Error: Can't open display:.

我在登录后通过ssh找到这个在调试的X11转发:debug1: X11 forwarding requested but DISPLAY not set。当我echo $DISPLAY在登录时运行时,结果是一个空行。

我在服务器的/etc/ssh/sshd_config文件上设置了以下选项:

Port 22
Address Family inet
X11Forwarding yes
X11DisplayOffset 10
X11UseLocalhost no
PrintMotd no
PrintLastLog yes
TCPKeepAlive yes
Run Code Online (Sandbox Code Playgroud)

该命令sudo service ssh status会生成一串行,表明 OpenBSD Secure Shell Server 处于活动状态(正在运行)。

在我的客户端上,文件~/.ssh/config 中只有以下几行(都是我写的):

Forward X11 yes
ForwardAgent yes
Run Code Online (Sandbox Code Playgroud)

我也试过命令,ssh -Y -v user@server,但无济于事(X11 转发显示问题仍然存在)。

此外,我尝试编辑服务器中的/etc/default/ssh文件,将-4添加到传递给 sshd 的选项中。该文件现在有以下几行:

# Options to pass to sshd

SSHD_OPTS=-4
Run Code Online (Sandbox Code Playgroud)

请注意,我已经直接在我的客户端上尝试过xlogo并且它导致了同样的错误,但如果我直接在我的服务器上尝试它,它工作得很好。此外,为了使 PuTTY 方法起作用,我使用XMing并在 PuTTY 运行时运行它。

我已经export DISPLAY=:10.0在服务器上尝试过,然后重新启动 ssh 服务器并重新启动并使用 ssh 重新登录,但它没有改变任何东西。在客户端上尝试此命令并重新登录等会导致出现新错误(debug1: failure x11xlogo之后,Error: Can't open display: server:10.0其中“服务器”是我的 user@server 登录名中的名称)。

我对这个话题不是很了解,所以如果我在做或没说一些愚蠢的事情,请告诉我。谢谢。

编辑: -vvv 由于肯斯特要求而输出。不确定是否有格式化这个的好方法。本站新人!

myname@myname-PC:~$ ssh -vvv -X user@server
OpenSSH_7.2p2 Ubuntu-4ubuntu2.4, OpenSSL 1.0.2g  1 Mar 2016
debug1: Reading configuration data /home/myname/.ssh/config
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug2: resolving "raspberrypi" port 22
debug2: ssh_connect_direct: needpriv 0
debug1: Connecting to raspberrypi [192.168.1.124] port 22.
debug1: Connection established.
debug1: key_load_public: No such file or directory
debug1: identity file /home/myname/.ssh/id_rsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/myname/.ssh/id_rsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/myname/.ssh/id_dsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/myname/.ssh/id_dsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/myname/.ssh/id_ecdsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/myname/.ssh/id_ecdsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/myname/.ssh/id_ed25519 type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/myname/.ssh/id_ed25519-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_7.2p2 Ubuntu-4ubuntu2.4
debug1: Remote protocol version 2.0, remote software version OpenSSH_7.4p1 Raspbian-10+deb9u2
debug1: match: OpenSSH_7.4p1 Raspbian-10+deb9u2 pat OpenSSH* compat 0x04000000
debug2: fd 3 setting O_NONBLOCK
debug1: Authenticating to raspberrypi:22 as 'pi'
debug3: hostkeys_foreach: reading file "/home/myname/.ssh/known_hosts"
debug3: record_hostkey: found key type ECDSA in file /home/myname/.ssh/known_hosts:1
debug3: load_hostkeys: loaded 1 keys from raspberrypi
debug3: order_hostkeyalgs: prefer hostkeyalgs: ecdsa-sha2-nistp256-cert-v01@openssh.com,ecdsa-sha2-nistp384-cert-v01@openssh.com,ecdsa-sha2-nistp521-cert-v01@openssh.com,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521
debug3: send packet: type 20
debug1: SSH2_MSG_KEXINIT sent
debug3: receive packet: type 20
debug1: SSH2_MSG_KEXINIT received
debug2: local client KEXINIT proposal
debug2: KEX algorithms: curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,ext-info-c
debug2: host key algorithms: ecdsa-sha2-nistp256-cert-v01@openssh.com,ecdsa-sha2-nistp384-cert-v01@openssh.com,ecdsa-sha2-nistp521-cert-v01@openssh.com,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,ssh-ed25519-cert-v01@openssh.com,ssh-rsa-cert-v01@openssh.com,ssh-ed25519,rsa-sha2-512,rsa-sha2-256,ssh-rsa
debug2: ciphers ctos: chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com,aes128-cbc,aes192-cbc,aes256-cbc,3des-cbc
debug2: ciphers stoc: chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com,aes128-cbc,aes192-cbc,aes256-cbc,3des-cbc
debug2: MACs ctos: umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1
debug2: MACs stoc: umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1
debug2: compression ctos: none,zlib@openssh.com,zlib
debug2: compression stoc: none,zlib@openssh.com,zlib
debug2: languages ctos:
debug2: languages stoc:
debug2: first_kex_follows 0
debug2: reserved 0
debug2: peer server KEXINIT proposal
debug2: KEX algorithms: curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group14-sha256,diffie-hellman-group14-sha1
debug2: host key algorithms: ssh-rsa,rsa-sha2-512,rsa-sha2-256,ecdsa-sha2-nistp256,ssh-ed25519
debug2: ciphers ctos: chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com
debug2: ciphers stoc: chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com
debug2: MACs ctos: umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1
debug2: MACs stoc: umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1
debug2: compression ctos: none,zlib@openssh.com
debug2: compression stoc: none,zlib@openssh.com
debug2: languages ctos:
debug2: languages stoc:
debug2: first_kex_follows 0
debug2: reserved 0
debug1: kex: algorithm: curve25519-sha256@libssh.org
debug1: kex: host key algorithm: ecdsa-sha2-nistp256
debug1: kex: server->client cipher: chacha20-poly1305@openssh.com MAC: <implicit> compression: none
debug1: kex: client->server cipher: chacha20-poly1305@openssh.com MAC: <implicit> compression: none
debug3: send packet: type 30
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug3: receive packet: type 31
debug1: Server host key: ecdsa-sha2-nistp256 SHA256:SwUQGmGCYHVAinSJ2TmUxr5lN6Hutu70nZEhrIJ36iQ
debug3: hostkeys_foreach: reading file "/home/myname/.ssh/known_hosts"
debug3: record_hostkey: found key type ECDSA in file /home/myname/.ssh/known_hosts:1
debug3: load_hostkeys: loaded 1 keys from raspberrypi
debug3: hostkeys_foreach: reading file "/home/myname/.ssh/known_hosts"
debug3: record_hostkey: found key type ECDSA in file /home/myname/.ssh/known_hosts:2
debug3: load_hostkeys: loaded 1 keys from 192.168.1.124
debug1: Host 'raspberrypi' is known and matches the ECDSA host key.
debug1: Found key in /home/myname/.ssh/known_hosts:1
debug3: send packet: type 21
debug2: set_newkeys: mode 1
debug1: rekey after 134217728 blocks
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug3: receive packet: type 21
debug2: set_newkeys: mode 0
debug1: rekey after 134217728 blocks
debug1: SSH2_MSG_NEWKEYS received
debug2: key: /home/myname/.ssh/id_rsa ((nil))
debug2: key: /home/myname/.ssh/id_dsa ((nil))
debug2: key: /home/myname/.ssh/id_ecdsa ((nil))
debug2: key: /home/myname/.ssh/id_ed25519 ((nil))
debug3: send packet: type 5
debug3: receive packet: type 7
debug1: SSH2_MSG_EXT_INFO received
debug1: kex_input_ext_info: server-sig-algs=<ssh-ed25519,ssh-rsa,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521>
debug3: receive packet: type 6
debug2: service_accept: ssh-userauth
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug3: send packet: type 50
debug3: receive packet: type 51
debug1: Authentications that can continue: publickey,password
debug3: start over, passed a different list publickey,password
debug3: preferred gssapi-keyex,gssapi-with-mic,publickey,keyboard-interactive,password
debug3: authmethod_lookup publickey
debug3: remaining preferred: keyboard-interactive,password
debug3: authmethod_is_enabled publickey
debug1: Next authentication method: publickey
debug1: Trying private key: /home/myname/.ssh/id_rsa
debug3: no such identity: /home/myname/.ssh/id_rsa: No such file or directory
debug1: Trying private key: /home/myname/.ssh/id_dsa
debug3: no such identity: /home/myname/.ssh/id_dsa: No such file or directory
debug1: Trying private key: /home/myname/.ssh/id_ecdsa
debug3: no such identity: /home/myname/.ssh/id_ecdsa: No such file or directory
debug1: Trying private key: /home/myname/.ssh/id_ed25519
debug3: no such identity: /home/myname/.ssh/id_ed25519: No such file or directory
debug2: we did not send a packet, disable method
debug3: authmethod_lookup password
debug3: remaining preferred: ,password
debug3: authmethod_is_enabled password
debug1: Next authentication method: password
user@server's password:
debug3: send packet: type 50
debug2: we sent a password packet, wait for reply
debug3: receive packet: type 52
debug1: Authentication succeeded (password).
Authenticated to raspberrypi ([192.168.1.124]:22).
debug1: channel 0: new [client-session]
debug3: ssh_session2_open: channel_new: 0
debug2: channel 0: send open
debug3: send packet: type 90
debug1: Requesting no-more-sessions@openssh.com
debug3: send packet: type 80
debug1: Entering interactive session.
debug1: pledge: exec
debug3: receive packet: type 80
debug1: client_input_global_request: rtype hostkeys-00@openssh.com want_reply 0
debug3: receive packet: type 91
debug2: callback start
debug1: X11 forwarding requested but DISPLAY not set
debug2: fd 3 setting TCP_NODELAY
debug3: ssh_packet_set_tos: set IP_TOS 0x10
debug2: client_session2_setup: id 0
debug2: channel 0: request pty-req confirm 1
debug3: send packet: type 98
debug1: Sending environment.
debug3: Ignored env SHELL
debug3: Ignored env TERM
debug3: Ignored env USER
debug3: Ignored env NAME
debug3: Ignored env LS_COLORS
debug3: Ignored env HOSTTYPE
debug3: Ignored env PATH
debug3: Ignored env PWD
debug1: Sending env LANG = en_US.UTF-8
debug2: channel 0: request env confirm 0
debug3: send packet: type 98
debug3: Ignored env SHLVL
debug3: Ignored env HOME
debug3: Ignored env LOGNAME
debug3: Ignored env XDG_DATA_DIRS
debug3: Ignored env LESSOPEN
debug3: Ignored env LESSCLOSE
debug3: Ignored env _
debug2: channel 0: request shell confirm 1
debug3: send packet: type 98
debug2: callback done
debug2: channel 0: open confirm rwindow 0 rmax 32768
debug3: receive packet: type 99
debug2: channel_input_status_confirm: type 99 id 0
debug2: PTY allocation request accepted on channel 0
debug2: channel 0: rcvd adjust 2097152
debug3: receive packet: type 99
debug2: channel_input_status_confirm: type 99 id 0
debug2: shell request accepted on channel 0
Linux raspberrypi 4.9.59-v7+ #1047 SMP Sun Oct 29 12:19:23 GMT 2017 armv7l

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Thu Mar  1 23:14:26 2018 from 192.168.1.8
user@server:~ $ debug2: client_check_window_change: changed
debug2: channel 0: request window-change confirm 0
debug3: send packet: type 98
user@server:~ $ xterm &
[1] 5043
user@server:~ $ xterm: Xt error: Can't open display:
xterm: DISPLAY is not set
^C
[1]+  Exit 1                  xterm
user@server:~ $
Run Code Online (Sandbox Code Playgroud)

小智 9

我看到这条消息debug1: X11 forwarding requested but DISPLAY not set是因为在连接到主机之前我没有在 shell 中设置 DISPLAY 环境变量。我正在使用带有 openssh 的“Windows 上的 Bash”。

以下是需要做的事情:

samik@mysystem:~$ export DISPLAY=localhost:0.0
samik@mysystem:~$ ssh -X samik@remotehost
Run Code Online (Sandbox Code Playgroud)

  • 当然,在 Windows 上你不能做 `export ...`(除非你在 WSL、Cygwin、Msys 或 Git Bash 上......)你需要 `set DISPLAY localhost:0.0` 甚至 `setx DISPLAY localhost: 0.0`(根据 https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/setx)从命令提示符更永久地设置它。 (2认同)

dir*_*rkt 3

如果您在“Linux 的 Windows 子系统”中运行 Ubuntu,则需要运行一些 X 服务器,然后才能将 RaspPi 上的任何 X 客户端连接转发到它。您安装的 Ubuntu 系统很可能无法立即执行此操作。

所以你需要安装一个X服务器。流行的选择是XmingCygwin XvcXsrv,其他也可以。

网上有很多相关教程,例如这里