2011-07-13 18:13:00 +0000 2011-07-13 18:13:00 +0000
117
117

Hoe los ik een "kan niet openen display" fout op bij het openen van een X programma na ssh'en met X11 forwarding ingeschakeld?

Na het starten van de X11 app (XQuartz 2.3.6, xorg-server 1.4.2-apple56) op mijn Mac (OS X 10.6.8), het openen van een terminal in X11 en het draaien van xhost +, dan ssh -Y naar mijn Ubuntu 10.04 VM (draaiend op VMware Fusion). Wanneer ik gedit .bashrc draai (bijvoorbeeld), krijg ik:

(gedit:9510): Gtk-WARNING **: cannot open display:

set | grep DISPLAY retourneert niets.

Maar als ik ssh -Y in mijn Ubuntu 11.04 machine draai, werkt gedit .bashrc. echo $DISPLAY retourneert “localhost:10.0”.

Ik heb export DISPLAY=localhost:10.0 geprobeerd terwijl ik in mijn VM zat en toen gedit .bashrc draaide, maar ik krijg:

(gedit:9625): Gtk-WARNING **: cannot open display: localhost:10.0

Wat zou er anders kunnen zijn in de configuratie van de twee verschillende Ubuntu machines die zouden verklaren waarom de ene wel en de andere niet werkt?

Update: Zoals voorgesteld door Zoredache in het commentaar hieronder, heb ik sudo apt-get install xbase-clients gedraaid, maar ik heb nog steeds hetzelfde probleem.

Antwoorden (14)

62
62
62
2012-02-21 08:47:03 +0000

Van xhost+ : Fout in “Cannot Open Display” oplossen tijdens het opstarten van GUI op Remote Server :

Ansluiting : U kunt de fout “kan display niet openen” herstellen door de xhost procedure te volgen die in dit artikel wordt genoemd.

Clients kunnen vanaf elke host verbinding maken met xhost+

Voer het volgende commando uit om de toegangscontrole uit te schakelen, waarmee u clients kunt toestaan om vanaf elke host verbinding te maken.

$ xhost +

toegangscontrole uitgeschakeld, cliënten kunnen vanaf elke host verbinding maken

Enable X11 forwarding

Terwijl u ssh doet, gebruikt u de optie -X om X11 forwarding in te schakelen.

$ ssh username@hostname -X

Betrouwbare X11 forwarding inschakelen, door gebruik te maken van de -Y optie,

$ ssh username@hostname -Y

Open GUI toepassingen in die host

Na het openen van ssh verbinding met de externe host zoals hierboven uitgelegd, kunt u elke GUI toepassing openen die deze zonder enig probleem zal openen.

Als u nog steeds de fout “kan display niet openen” krijgt, stel dan de DISPLAY-variabele in zoals hieronder weergegeven.

$ export DISPLAY='IP:0.0'

Opmerking: IP is het IP van het lokale werkstation waar u wilt dat de GUI-toepassing wordt weergegeven.

49
49
49
2011-07-13 18:54:50 +0000

Controleer de sshd_config van de server (normaal gesproken /etc/ssh/sshd_config), en zorg ervoor dat de X11Forwarding optie is ingeschakeld met de regel

X11Forwarding yes

Als X11Forwarding niet is gespecificeerd, is de standaardinstelling niet op de Debian machines die ik beschikbaar heb om te controleren.

18
18
18
2012-06-29 20:44:03 +0000

Ik heb dit probleem ook gehad bij het inloggen op een Ubuntu VM van Mac OS X – het lijkt om een of andere reden niet te houden van ‘localhost’ in de weergavevariabele. Dus stel het IP handmatig in, zoals harrymc suggereert:

export DISPLAY="127.0.0.1:10.0"

Dan zouden X11 programma’s goed moeten zijn. Het lijkt niet nodig om het OS te vertellen dat localhost en 127.0.0.1 gelijkwaardig zijn, maar het werkt wel.

14
14
14
2012-10-22 07:59:02 +0000

Ik had dit probleem met mijn CentOS KVM server, ik miste het “xauth” programma.

9
9
9
2014-10-17 08:06:53 +0000

Als je dit probleem na enige tijd hebt wanneer je met -X arg. of gewoon ForwardX11 in /etc/ssh/ssh_config, draai dan $ ssh username@hostname -Y, om vertrouwde X11 forwarding in te schakelen, weet je de exacte oorzaak niet maar ik denk dat met -X sommige functies na enige tijd verlopen, waarschijnlijk om de veiligheid te verhogen.

Dit is wat ik online heb gevonden :

Als je ssh -X remotemachine gebruikt wordt de externe machine behandeld als een niet-vertrouwde client. Dus je lokale client stuurt een commando naar de externe machine en ontvangt de grafische uitvoer. Als je commando in strijd is met sommige beveiligingsinstellingen krijg je een fout.

Maar als je ssh -Y remotemachine gebruikt wordt de machine op afstand behandeld als een vertrouwde client. Deze laatste optie kan beveiligingsproblemen openen. Omdat andere grafische (X11) clients gegevens van de externe machine kunnen ruiken (screenshots maken, keylogging en andere vervelende dingen doen) en het is zelfs mogelijk om die gegevens te wijzigen.

Als je meer wilt weten over die dingen stel ik voor om de Xsecurity manpage of de X Security extension spec te lezen. Verder kunt u de opties ForwardX11 en ForwardX11Trusted in uw /etc/ssh/ssh_config.

bronnen:

6
6
6
2017-08-30 11:36:06 +0000

Getest op mijn Mac, andere systemen kunnen OK zijn :

  1. 2. Laat de klanten verbinding maken vanaf elke host met xhost+

$ xhost +

  1. 2. U moet een omgeving hebben die X11-weergave

[Mac-systeem] ondersteunt Installeer X11 voor de mac https://www.xquartz.org/

  1. 3. U moet uw ssh-server laten doorsturen x11 weergave

update /etc/ssh/sshd_config en stel X11Forwarding yes in en herstart dan uw ssh-server

  1. U moet uw ssh-sessie laten doorsturen x11 weergave met -X parameter

$ ssh -X user@ip

  1. Hoe opent u X11 app in PyCharm?
  • open een ssh sessie die X11 weergave ondersteunt (vergeet niet deze sessie te bewaren)
  • draai echo $DISPLAY in die ssh sessie
  • stel DISPLAY omgevingsvariabele in voor uw PyCharm
4
4
4
2017-09-01 01:17:28 +0000

Ik moest in /etc/ssh/sshd_config het volgende zetten:

X11UseLocalhost no

In plaats van het “ja” te zetten. Vreemd als de standaardinstelling “NO” is Gebruikers die putty gebruiken met XMing onder Windows. Ik gebruik rechte ssh over Fedora. Af en toe zou het beginnen met het geven van

error can't open display localhost

Reboot van de server zou het meestal repareren, maar dit is dom. Heeft het bovenstaande, herstart de service sshd op de server en presto nieuwe verbindingen werken weer prima.

4
4
4
2012-07-10 21:26:59 +0000

Bij het uitvoeren van UXTERM of XTERM geef je gewoon

export $DISPLAY

De variabele zal er zijn. Stel hem dan gewoon in en exporteer hem.

3
3
3
2019-07-08 17:25:35 +0000

Deze instelling werkt voor mij:

Lokaal (64 bit Cygwin op Windows 10) DISPLAY=:0

Server (Amazon EC2 RHEL 7.6) DISPLAY=:10.0

Deze instellingen zijn gevonden door te klikken op “X applications menu on :0” in de taakbalk en te kiezen voor Systeemgereedschappen > Terminal

2
2
2
2015-03-18 22:52:32 +0000

Ik had ook dit probleem met Solaris 10 en vond dat de luisteraar niet was ingesteld.

svccfg –s /application/x11/x11-server listprop options/tcp_listen
svccfg –s /application/x11/x11-server setprop options/tcp_listen = true
1
1
1
2017-05-01 04:13:35 +0000

Als u toevallig Konsole gebruikt, schakel dan gewoon naar een andere terminal emulator zoals Xfce Terminal en probeer het opnieuw met behulp van root.

1
1
1
2014-07-15 15:13:51 +0000

Op CentOS 6.5 verloor ik plotseling de toegang tot X-programma’s op afstand na het knoeien met /etc/hosts. Zelfde symptoom van lege $DISPLAY variabele (geen hulp bij het handmatig instellen/exporteren).

De 127.0.0.1 entry die naar de eigenlijke hostnaam wijst is noodzakelijk; in feite lijkt de volgorde ook relevant te zijn (put last & it won’t work…)

[root@poseidon /etc]$ cat hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1 localhost.localdomain localhost
::1 localhost6.localdomain6 localhost6
127.0.0.1 poseidon.mycampus.edu poseidon
1XX.XXX.XXX.208 poseidon.mycampus.edu poseidon

Na het repareren hiervan werken xeyes, xclock en ander X-test-speelgoed weer, daarom is mijn benodigde virt-manager ook weer on line.

1
1
1
2016-06-10 11:56:04 +0000

Ik vond net een mooie hik in mijn setup die x-doorschakelen verhinderde: Mijn firewall blokkeerde alle verbindingen van localhost, waardoor de tunnel niet kon worden bereikt.

1
1
1
2018-05-30 13:40:40 +0000

open terminal $ ssh gebruikersnaam@hostname -X

$ ssh username@hostname -Y

$ export DISPLAY='IP:0.0'

export DISPLAY=“127.0.0.1:10.0” alles zou moeten werken.