x11 ekranı neden ssh login ile çalışmıyor?


22

Uzak bir sunucuya giriş yaptım ve bir x uygulaması görüntülemeye çalışıyorum (örn. Firefox). ancak bir hata mesajı belirir. Aşağıda firefox’u açma denemelerim var

Black@Black-PC ~
$ ssh -X kwagjj@$labserver -p 122
[kwagjj@James5 ~]$ firefox
Error: no display specified
[kwagjj@James5 ~]$ exit
logout
Connection to 143.248.146.204 closed.

Black@Black-PC ~
$ ssh -Y kwagjj@$labserver -p 122
[kwagjj@James5 ~]$ firefox
Error: no display specified
[kwagjj@James5 ~]$ 

-X, -Y kullandım çünkü bu iki seçeneğin X11 ile ilgili kimlik bilgileriyle ilgili olduğunu okudum ve bu anahtarlar benim için işi yapacak. -X, -Y anahtarları olmadan bile girişim başarısız oldu.

'Ekranda speicified yok' hatası ne anlama geliyor?

PS Tuhaf olan, eğer uzak sunucuya PUTTY üzerinden bağlanırsam ve 'firefox' komutunu tekrarlarsam çalışır mı?!?! (Firefox yerel bilgisayarda görüntülenir).

Not Yerel bilgisayarım Windows 7 olduğundan, X11'in görüntülenmesi için arka plan üzerinde çalışan Xming'i kullanıyorum. Üst kısımda yazılı denemeye gelince, komutlar Cygwin terminalinde yazılmıştır.


Cygwin terminalinizden yerel olarak bir şey görüntülemeye çalıştınız mı? Örneğin, xclock gibi yerel bir X yardımcı programını bulabilir ve ne olduğunu görmek için çalıştırabilirsiniz. Yerel olarak görüntüleyemiyorsanız, uzak ekran çalışmaz. Cygwin için X sunucusuna da ihtiyacınız olabilir.
unxnut

1
@ unxnut sizin belirttiğiniz gibi DISPLAYdeğişkenim ayarlanmadı. bu yüzden export DISPLAY=:0.0' and executed xclock` ile ayarladım ve xclock çıktı. Ama sonra uzak sunucuya ssh ile giriş yaptığımda ve xclocktekrar denediğimde , şöyle diyorError: Can't open display:
kwagjj

Yanıtlar:


16

Cygwin ortamınızda DISPLAY değişkeninin ayarlandığından emin olun:

export DISPLAY=:0.0

SSH ile bağlandıktan sonra, kabuğun aşağıdakiler ile doğru EKRAN değişkeni de bildiğini kontrol edin:

echo $DISPLAY

4
DISPLAY değişkenini yerel bilgisayarın cygwin terminali içinde ayarladım ve daha sonra uzaktaki sunucuya ssh'ed ve yazdım echo $DISPLAY. Ancak yine de uzak sunucudaki DISPLAY değişkeni hiçbir şey olarak ayarlanmadı ..
kwagjj

2
Error: Can't open display: :0.0
Ahmed,

2
Bunu yapın:export DISPLAY=localhost:0
trogne

18

Ben sadece başsız bir RHEL7 sunucusuna bağlanmada bu sorunu yaşadım.

DISPLAY değişkeninin ayarlanması ve uygun şekilde yetkilendirilmesi için ana makinenize yüklenmiş xorg-x11-xauth paketine ihtiyacınız var.

Umarım birilerini kurtarmışımdır.


3
tam olarak aradığım şeydi. Çok takdir!
josh-cain

1
Mükemmel cevap! Diğer çözümler (DISPLAY'in dışa aktarma yoluyla manuel olarak ayarlanması), istemci ile sunucu arasında şifrelenmemiş bir aktarımla sonuçlanacaktır! Debian Squeeze'de her şeyin çalışabilmesi için kurulması gereken "xauth" paketi vardı. Başına bir yeniden giriş sonra ssh -Xbir echo $DISPLAYURL + portu ve bir çağrı dönen xterm &yerel bir pencerede açıldı bir terminal.
Jpsy

7

@Jensd, @unxnut'a yardım ettiğin için teşekkürler. Yorumlarınıza göre sorunu çözebildim.

Çözüm iki adım gerektiriyordu:

  1. DISPLAY değişkeni doğru ayarlanmış olmalıdır.
  2. Uzak sunucuya ssh'ing yaparken, -X anahtarı açık olmalıdır

önceki girişimlerimde bu iki koşuldan biri ya da her ikisi de eksik.

Her neyse, bunu gören daha sonraki kullanıcılar için, size ne söylemeye çalıştığımı göstermeye örnekler.

dava 1

yerel makinemde DISPLAY değişken ayarlanmamış. Daha sonra -X anahtarını kullanarak uzak sunucuya ssh yazıp çalıştırmayı deneyeceğim xclock.

Black@Black-PC ~
$ echo $DISPLAY

## the blank means that DISPLAY variable has not been specified##
Black@Black-PC ~
$ ssh -X kwagjj@$labserver -p 122
Last login: Tue Jun 24 22:23:13 2014 from 
[kwagjj@James5 ~]$ xclock
Error: Can't open display:
[kwagjj@James5 ~]$ setenv | grep $DISPLAY
DISPLAY: Undefined variable.

Gördüğünüz gibi Error: Can't open display:uzak sunucu terminalinde bir hata gösteriliyor.

Durum 2

bu sefer yerel makinede DISPLAY değişkenini belirleyeceğim. Ama ssh'ing yaparken, -X anahtarını açmayacağım. Sonuç bir başarısızlık olacaktır:

Black@Black-PC ~
$ export DISPLAY=:0.0

Black@Black-PC ~
$ echo $DISPLAY
:0.0

Black@Black-PC ~
$ ssh kwagjj@$labserver -p 122
Last login: Tue Jun 24 22:33:32 2014 from 
[kwagjj@James5 ~]$ xclock
Error: Can't open display:
[kwagjj@James5 ~]$ setenv | grep DISPLAY
[kwagjj@James5 ~]$ 

başlangıçta DISPLAY değişkenini doğru şekilde ayarladığımı görebilirsiniz. Fakat öyle olsa bile, ssh'ing işleminden sonra (-X anahtarı olmadan) xclock çalıştırılmaz.

* Burada farklı bir sonuç setenv | grep DISPLAYgörülebilir (case1 ile karşılaştırınız). 2. durumda, sonuç sadece boştur. Öte yandan, case1'in bu komut satırının sonucu DISPLAY: undefined variable... Bu farkın nasıl ortaya çıktığından emin değilim, ancak koşul 1 veya 2'yi yerine getirip getirmediğinize ilişkin bir ipucu alıyorum. .

case3

bu sefer yerel makinedeki DISPLAY değişkenini düzgün bir şekilde belirleyeceğim ve ayrıca -X anahtarım açıkken uzak sunucuya ssh yazacağım.

Black@Black-PC ~
$ echo $DISPLAY
:0.0

Black@Black-PC ~
$ ssh -X kwagjj@$labserver -p 122
Warning: untrusted X11 forwarding setup failed: xauth key data not generated
Warning: No xauth data; using fake authentication data for X11 forwarding.
Last login: Tue Jun 24 22:37:27 2014 from 
[kwagjj@James5 ~]$ xclock &
[1] 9174
[kwagjj@James5 ~]$ setenv | grep DISPLAY
DISPLAY=localhost:11.0
[kwagjj@James5 ~]$

Bu ayar ile xclockçalışır! İşte yalan söylemediğimi kanıtlayan bir ekran görüntüsü. görüntü tanımını buraya girin xclock yerel makinemde başarılı bir şekilde gösteriliyor.

Yine, setenv | grep DISPLAYbu durumda sonucunu kontrol edin . Şimdi gösterir DISPLAY=localhost:11.0. Bildiğim kadarıyla, bu .Xauthority dosyasındaki MIT-MAGIC-COOKIE ile ilgili ama bunun hakkında fazla bir şey bilmediğim için daha fazla ileri gitmeyeceğim.

Sonuç: Yukarıdaki üç durumdan, uzak X Windows'un düzgün görüntülenmesi için hem yerel makinenin 1. EKRAN değişkeni hem de 2. ssh -Xanahtarının uygun şekilde ayarlanması gerektiğini onaylayabiliriz . Tabii ki, uzak sunucu X11 yönlendirmesine izin vermelidir.

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.