Putty-> Cygwin X11 Errore di inoltro "Impossibile aprire il display"


11

Sto usando Putty su una macchina Windows per ssh in un altro server. Una volta lì, sto cercando di utilizzare l'inoltro X11 per far apparire le finestre sul mio computer. Il sistema remoto non è il problema poiché è un sistema di grandi dimensioni che viene utilizzato con successo da molti altri utenti nello stesso modo.

Accedo al sistema tramite Putty senza problemi e quindi startxwineseguo cygwin. Tuttavia, quando xtermeseguo Putty, mi viene dato l'errore in xterm Xt error: Can't open display: localhost:##.0cui i segni della sterlina sono due numeri interi il cui valore cambia ogni volta che eseguo l'accesso.

  • Ho l'inoltro X11 abilitato nelle impostazioni Putty
  • Ho provato a impostare la "Posizione di visualizzazione X" su localhost:0
  • Mi sono assicurato di scaricare il pacchetto X11 per Cygwin
  • Ho provato a usare solo startxinvece distartxwin
  • Ho provato setenv DISPLAY localhost:0esetenv DISPLAY my.ip.address

Sfortunatamente, il problema persiste. Ho esaurito le mie risorse su Google su questo argomento e quindi apprezzerei molto qualsiasi aiuto. Grazie!


localhost:##.0Quali numeri reali vedi qui? Che tipo di software X stai eseguendo sul computer Windows?
Kenster,

Risposte:


11

I recenti aggiornamenti di Cygwin hanno cambiato il suo server X per non ascoltare le connessioni TCP per impostazione predefinita. Invece, X di Cygwin utilizza (l'implementazione Cygwin di) socket di dominio Unix e PuTTY (come programma Windows nativo) non sa come usarli.

Le FAQ di Cygwin X e le mailing list di Cygwin hanno maggiori dettagli.

La mia soluzione era quella di prendere il collegamento standard di Cygwin che utilizza startxwin per avviare X:

C:\cygwin\bin\run.exe --quote /usr/bin/bash.exe -l -c "cd; /usr/bin/startxwin"

e sostituiscilo con una chiamata diretta di xinit con le mie opzioni desiderate (aggiungi -listen tcpe rimuovi -auth):

C:\cygwin\bin\run.exe --quote /usr/bin/bash.exe -l -c "cd; /usr/bin/xinit /etc/X11/xinit/startxwinrc -- /usr/bin/XWin :0 -multiwindow -listen tcp"

Questo è meno sicuro dei nuovi valori predefiniti di Cygwin; dovrebbe essere utilizzato solo su un sistema a utente singolo e la configurazione del firewall per bloccare le connessioni a XWin potrebbe essere saggia.


dove eseguirlo ?? nel terminale Cygwin / PS / CMD
gialloandred

1
@yellowandred Inizia con `C:`, quindi è un percorso in stile Windows, non un terminale Cygwin. L'ho appena inserito nella sezione Target del mio collegamento di Windows. CMD dovrebbe funzionare. PowerShell dovrebbe funzionare, ma potrebbe essere necessario aggiornare l'offerta.
Josh Kelley,

6

In alternativa a quanto detto da Josh Kelley, puoi anche modificare il file startxwin e aggiungere "-listen tcp" agli argomenti del server predefinito.

Vecchio: defaultserverargs = "- multiwindow"

Nuovo: defaultserverargs = "- multiwindow -listen tcp"

Anche con l'autenticazione abilitata, ho dovuto puntare lo stucco sul file di autenticazione creato dallo script startxwin. Il mio si trovava qui: c: \ cygwin64 \ home \ USERNAME.Xauthority

Poiché questo file viene ricreato, dovrai riavviare le sessioni di stucco dopo aver resettato il tuo xserver.

Per motivi di sicurezza, potresti anche consentire connessioni solo da localhost, poiché è qui che lo stucco lo inoltra.


4

Ho provato a impostare la "posizione di visualizzazione X" su localhost: 0

Prova invece a impostare "Posizione di visualizzazione X" su ": 0,0"!

export DISPLAY=:0.0

Josh Kelley ha menzionato le FAQ di Cygwin X :

3.13. Ho aggiornato e ora i client X non riescono a connettersi

A1:

A partire dal server X 1.17, per impostazione predefinita il server non è in attesa di connessioni TCP / IP, accettando solo connessioni locali su un socket di dominio unix.

Per i client locali, utilizzare DISPLAY =: 0.0, anziché DISPLAY = localhost: 0.0, DISPLAY = 127.0.0.1: 0.0, DISPLAY = :: 1: 0.0, ecc.



0

Come altri hanno già detto, il trucco è aggiungere -listen tcpagli argomenti del server. Tuttavia, ti consiglio di farlo chiamando startxwin -- -listen tcpper consentire di startxwincompilare il resto del xinitcomando.

In una scorciatoia del menu Start:

C:\cygwin\bin\run.exe --quote /usr/bin/bash.exe -l -c "cd; /usr/bin/startxwin -- -listen tcp"
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.