Putty-> Cygwin X11 Penerusan Kesalahan "Tidak dapat membuka layar"

11

Saya menggunakan Putty pada mesin Windows untuk ssh ke server lain. Sesampai di sana, saya mencoba menggunakan penerusan X11 untuk memunculkan jendela ke komputer saya. Sistem jarak jauh bukan masalah karena ini adalah sistem besar yang berhasil digunakan oleh banyak pengguna lain dengan cara yang sama.

Saya masuk ke sistem melalui Putty tanpa masalah dan kemudian jalankan startxwindi cygwin. Namun, saat menjalankan xtermPutty, saya diberikan kesalahan di xterm Xt error: Can't open display: localhost:##.0mana tanda-tanda pon adalah dua bilangan bulat yang nilainya berubah setiap kali saya masuk.

  • Saya memiliki penerusan X11 diaktifkan di pengaturan Putty
  • Saya mencoba mengatur "X display location" ke localhost:0
  • Saya telah memastikan untuk mengunduh paket X11 untuk cygwin
  • Saya telah mencoba menggunakan hanya startxbukanstartxwin
  • Saya sudah mencoba setenv DISPLAY localhost:0dansetenv DISPLAY my.ip.address

Sayangnya, masalah ini tetap ada. Saya telah menghabiskan sumber daya Googling saya tentang topik ini dan karenanya saya akan sangat menghargai bantuan apa pun. Terima kasih!

Tyler
sumber
localhost:##.0Berapa angka aktual yang Anda lihat di sini? Apa jenis perangkat lunak X yang Anda jalankan di komputer Windows?
Kenster

Jawaban:

11

Pembaruan Cygwin terbaru telah mengubah server X-nya untuk tidak mendengarkan koneksi TCP secara default. Sebagai gantinya, Cygwin X menggunakan (implementasi Cygwin dari) soket domain Unix, dan Putty (sebagai program Windows asli) tidak tahu cara menggunakannya.

The Cygwin X FAQ dan Cygwin mailing list memiliki rincian lebih lanjut.

Solusi saya adalah mengambil jalan pintas Cygwin standar yang menggunakan startxwin untuk meluncurkan X:

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

dan ganti dengan doa xinit langsung dengan opsi yang saya inginkan (tambah -listen tcpdan hapus -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"

Ini kurang aman daripada standar baru Cygwin; seharusnya hanya digunakan pada sistem pengguna tunggal, dan mengonfigurasi firewall Anda untuk memblokir koneksi ke XWin mungkin bijaksana.

Josh Kelley
sumber
di mana menjalankan ini ?? di terminal cygwin / PS / CMD
yellowandred
1
@yellowandred Ini dimulai dengan `C:`, jadi ini adalah jalur bergaya Windows, bukan terminal Cygwin. Saya hanya meletakkannya di bagian Target pada pintasan Windows saya. CMD seharusnya bekerja. PowerShell harus berfungsi, tetapi Anda mungkin harus memperbarui kutipan.
Josh Kelley
6

Sebagai alternatif dari apa yang dikatakan Josh Kelley, Anda juga dapat mengedit file startxwin dan menambahkan "-listen tcp" ke argumen server default.

Lama: defaultserverargs = "- multiwindow"

Baru: defaultserverargs = "- multiwindow -listen tcp"

Juga dengan otentikasi diaktifkan, saya harus mengarahkan dempul ke file otentikasi yang dibuat oleh skrip startxwin. Milik saya ada di sini: c: \ cygwin64 \ home \ USERNAME.Xauthority

Karena file ini dibuat ulang, Anda harus memulai kembali sesi dempul setelah Anda mereset xserver Anda.

Untuk keamanan, Anda mungkin juga hanya mengizinkan koneksi dari localhost, karena ini adalah tempat dempul meneruskannya.

Tuan Launcelot
sumber
4

Saya mencoba mengatur "X display location" ke localhost: 0

Coba setel "X display location" ke ': 0,0' sebagai gantinya!

export DISPLAY=:0.0

Josh Kelley menyebutkan FAQ Cygwin X :

3.13. Saya memutakhirkan dan sekarang klien X tidak dapat terhubung

A1:

Sejak X server 1.17, secara default server tidak mendengarkan koneksi TCP / IP, hanya menerima koneksi lokal pada soket domain unix.

Untuk klien lokal, gunakan DISPLAY =: 0.0, daripada DISPLAY = localhost: 0.0, DISPLAY = 127.0.0.1: 0.0, DISPLAY = :: 1: 0.0, dll.

pengguna3248784
sumber
0

Seperti yang orang lain katakan, triknya adalah menambah -listen tcpargumen server. Namun, saya sarankan melakukan ini dengan memanggil startxwin -- -listen tcpuntuk membiarkan startxwinmembangun sisa xinitperintah.

Dalam shortcut Start Menu:

C:\cygwin\bin\run.exe --quote /usr/bin/bash.exe -l -c "cd; /usr/bin/startxwin -- -listen tcp"
Dominic Lemire
sumber