-X bayrağı (X11 Yönlendirme) Windows'ta çalışmıyor gibi görünüyor


16

Windows 8.1'de Open SSH (OpenSSH_6.6.1p1, OpenSSL 1.0.1i 6 Ağu 2014) kullanıyorum. X11 Yönlendirme çalışmıyor gibi görünüyor. DISPLAY ortam değişkeni ayarlanmış gibi görünmüyor.

Örneğin, bağlanmak ve env'yi çalıştırmak için BitVise veya Putty kullanırsam şunu görüyorum:

[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

Bunun yerine OpenSSH (ssh -X marko @ vm) kullanırsam:

[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
Açık bir şekilde olabilir, ancak yazınızdan emin olamıyorum - aslında Windows'ta yüklü bir X sunucunuz var mı , örneğin bitvise.com/ssh-x11-forwarding'i takip ediyor musunuz?

1
Evet, Xming X
Sunucum var

Sadece bir şeyi test etmek için PuTTY ile aynı şeyi denediniz mi? Değilse, bunu denemenizi ve orada çalışıp çalışmadığını görmenizi öneririm.
polemon

1
evet, macun içinde çalışıyor.
abendigo

Windows VM'mi şu an kontrol ediyorum. PuTTY'nin bu çalışmayı sağlamak için ne tür değişkenleri kontrol etmesi kadar basit olabilir. Birkaç saat içinde bir cevap ekleyeceğim.
polemon

Yanıtlar:


16

DISPLAYİstemcide ortam değişkenini ayarladınız mı ? Hangi kabuğu kullandığınızdan emin değilim, ancak Bourne kabuğu türeviyle (bash gibi) lütfen deneyin:

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

Veya cmd.exe'yi kullanıyorsanız:

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

Teşekkür ederim, tam da bu eksikti! İzin verildiği anda ödül kazanacağım.
abendigo

Roaima'nın cevabına (aşağıda) oy verdim, çünkü neden bir yanıtı vermenin yanı sıra açıklar .
Azhrei

2
Bu yüzden roaima'nın cevabı sorunun neden oluştuğunu açıklıyor, ancak sorunu çözmeme yardımcı olmadı. Sorumda pencereleri çalıştırdığımı açıkladım. yaegashi'nin cevabı bana sorunumu çözen pencerelere girme komutu verdi. bu yüzden bu cevabı seçtim.
abendigo

Bu cevaba oy vermek için bir hesap açtım. Buraya gelmeden önce uzun süre internette arama yapmıştım.
Rio Wing

3
Bu çözüm benim için işe yaramıyor. set DISPLAY=anythingardından ssh -X user@remotedöndürür CreateProcessW failed error:2 ssh_askpass: posix_spawn: No such file or directory Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).Çevre değişkeninin ayarının kaldırılması, set DISPLAY=x iletmeyi çalışmadan tekrar başarılı bir şekilde ssh yapmamı sağlar. DISPLAY ayarının yazılımın şifremi bu şekilde istemesine neden olması bana mantıklı gelmiyor. github.com/PowerShell/Win32-OpenSSH/issues/1088 github.com/PowerShell/Win32-OpenSSH/issues/1088
Pavel Komarov

14

Çalıştırdığınızda ssh -X remotehostve DISPLAY=localhost:10uzak ana bilgisayara sunulduğunda. sunucu adresini belirlemek için sshorijinal bağlantı noktasını kullanarak bu bağlantı noktasını dinler ve trafiği çağrı sistemine geri iletir DISPLAY.

Yerel sisteminizde olması muhtemeldir DISPLAY=:0. Ya da yapmadıysanız, bunun varsayılanı budur. Bu, yerel sisteme, ekranla iletişim kurmak için UNIX etki alanı soketini kullanmasını bildirir. Ne yazık ki XmingWindows'ta bu UNIX etki alanı soketini ayarlamıyor, bu nedenle sshX11 yönlendirmeniz bu tür bir hata ile başarısız oluyor:

$ 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

Düzeltme - en azından Xminggittiği sürece - oldukça basittir. DISPLAYDeğişkeni, UNIX etki alanı soketi yerine dinleme TCP soketine başvuruda bulunacak şekilde değiştirin .

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

XmingYerel TCP bağlantı noktası 6000'i dinlemek için yapılandırmanızı uyarlamanız gerekebilir. İşte böyle başlıyorum Xming:

Xming.exe :0 -clipboard -multiwindow

Ve Xmingtcp / 6000 bağlantı noktasını dinlediğini doğrulayan kanıtlar :

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

Teşekkürler, tam olarak bu problemi yaşadım! Ben bilmiyordum: 0 bağlantı bir soket üzerinden yapılır anlamına gelir. Her zaman localhost için kısayol olduğunu düşündüm: 0.
Andreas Raster

Windows ve Xming için Ubuntu için Bash ile aynı sorunu yaşadım ve bu çözüldü! DISPLAY ayarını yapmak zorunda kaldım localhost:0.
Ben Richards

DISPLAY=:0WSL + XMing için neden iyi çalışıyor xeyes, ancak neden işe yaramadı ssh -X? ssh -X$ DISPLAY'i diğer yerel X11 istemcilerinden farklı mı yorumluyor? Diğer X11 istemcileri otomatik olarak geri dönüyor localhost:0ancak geri ssh -Xdönmüyor mu?
Markus Kuhn

Üzerinde man XDISPLAY =: 0'daki boş ana bilgisayar adının "En verimli yerel ulaşım seçilecek" anlamına geldiğini söylüyor. Yani ssh -Xbunu yapmak için farklı bir algoritma kullanıyor olabilir xeyes?
Markus Kuhn

@MarkusKuhn belki WSL + Xming, Cygwin + Xming'den farklıdır. Şimdi kullandığımı görüyorum DISPLAY=:0ve ssh -Xmutlu bir şekilde iletiyorum.
roaima

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.