Penerusan X11 dengan Xming melalui SSH?

11

Saya memiliki akses SSH, dan saya telah menginstal Xming, bersama dengan font Xming. Saya telah mengkonfigurasi Putty untuk meneruskan x11 dan menyuruhnya meletakkan desktop di localhost: 0, sesuai dengan instruksi di sini .

Namun, setelah saya masuk, dan startx, saya tidak mendapatkan apa-apa. Atau lebih tepatnya, ia menjalankan banyak pesan yang tampaknya mengatakan semuanya berfungsi, tetapi saya mendapatkan kursor di jendela konsol saya yang bertindak seperti sedang menunggu. Dan itu saja.

Apa yang saya lewatkan? Apakah saya perlu membuka sesuatu untuk melihat desktop?

Saya ingin meneruskan desktop saya ke PC kerja saya, sehingga saya dapat bermain dengan RasPi saat makan siang tanpa secara fisik mencolokkan perangkat kerasnya. Tolong bantu.

EDIT:

Cuplikan layar tentang apa yang terjadi dengan Xming yang berjalan, dan saya SSH masuk dan memanggil startx:

SSH dengan respons Xming

EDIT 2:

Jawaban ini mengatakan startxtidak perlu, karena ia memulai server RasPi X, dan saya menggunakan server Xming pada Windows. Dalam hal itu, bagaimana saya bisa sampai ke desktop / GUI di Xming dari Windows? Karena, bahkan dengan menjalankan Xming, dan SSH diaktifkan, saya tidak mendapatkan apa pun kecuali prompt konsol normal. Mungkin saya salah melakukannya. Apa yang saya inginkan adalah RasUI GUI saya yang normal dan berjalan di jendela pada PC Windows jarak jauh saya. Saya tidak ingin menggunakan VNC. Saya meneruskan melalui Internet. Bagaimana saya sampai di sana?

zenbike
sumber
2
Saya juga ingin menjalankan sesi grafis dari Raspberry saya ke Komputer Windows saya. Dan ketika saya melihat pesan Anda mengatakan bahwa startx berarti memulai server X, saya mengerti bahwa saya perlu memulai program X ... Jadi, mari kita mulai ... x-session-manager! dengan begitu, Anda memiliki sesi grafis di komputer Anda yang jauh. terima kasih, Anda memberi saya jalan!

Jawaban:

15

Jika Anda mulai Xming di komputer Windows Anda, maka Anda sudah memiliki server X yang berjalan. Anda tidak harus memulai server X menggunakan Raspberry Pi Anda startx. Aplikasi X Anda akan berjalan pada Raspberry Pi tetapi aplikasi tersebut akan menarik ke server Xming X Windows.

Dokumentasi yang Anda tautkan , menyatakan bahwa Anda harus menjalankan X server pada Windows, dan tidak menyebutkan bahwa Anda harus memulai X server di Linux. Dalam kalimat terakhir dari dokumentasi:

Anda sekarang dapat menjalankan aplikasi X dari host di desktop lokal Anda

"Aplikasi X" merujuk bukan ke server X (yang harus dimulai oleh startx) tetapi aplikasi seperti xclock, xeyes, dan sebagainya.

Satu aplikasi X khusus adalah sesi yang akan memulai manajer sesi standar LXDE (setidaknya pada Raspbian saya). Memulai aplikasi ini di konsol akan memberi Anda "GUI lengkap" yang Anda cari:

lxsession

Secara pribadi saya merasa tidak berguna untuk memulai lxsession, memulai aplikasi X pada konsol jauh lebih mudah bagi saya.

asalamon74
sumber
1
Baik. Ini saya bisa mengerti, saya pikir. Anda mengatakan startx tidak perlu, karena ia memulai server RasPi x, dan saya menggunakan server Xming di windows. Dalam hal itu, bagaimana saya bisa sampai ke desktop / GUI di Xming dari windows. Karena, bahkan dengan menjalankan Xming, dan SSH diaktifkan, saya tidak mendapatkan apa pun kecuali prompt konsol normal. Anda mengatakan bahwa saya hanya akan menjalankan aplikasi aktual dalam xming, bukan GUI lengkap. Mungkin saya salah melakukannya. Apa yang saya inginkan adalah RasUI GUI saya yang normal dan berjalan di jendela pada PC windows jarak jauh saya. Saya tidak ingin menggunakan VNC. Saya meneruskan melalui internet.
zenbike
Diperbarui jawabannya.
asalamon74
Bekerja dengan sempurna, jika (seperti yang diharapkan) agak lambat untuk merespons Terima kasih untuk bantuannya.
zenbike
1
... Dan itulah alasan panduan Anda merekomendasikan untuk menjalankan satu aplikasi lebih dari satu ssh sekaligus ...
Alexander - Reinstate Monica
1
@ asalamon74 Terima kasih! Wow! ini hanya kickass. Saya tidak harus berurusan dengan keyboard dan mouse yang terhubung ke usb dengan kawat pendek gila-gilaan. Saya terbiasa duduk di depan tv dengan pengaturan di atas. SEKARANG? Aku hanya ssh dan menjalankan gui seperti bos !!
Dheeraj Bhaskar
1

Menggunakan Cygwin / X

Jika Anda tidak terikat dengan Xming, Anda bisa menggunakan Cygwin / X untuk menjalankan server X di Windows.

Mempersiapkan Raspberry Pi

Cobalah untuk membuat koneksi SSH biasa dari Windows ke Raspberry Pi menggunakan PowerShell:

Masuk ke Raspberry Pi di Windows dengan PowerShell dan SSH

Mengingat Raspbian Buster termasuk X11Forwarding yesdalam /etc/ssh/sshd_config, Raspberry Pi Anda juga harus dapat meneruskan output visual aplikasi X11 ke server X pada Windows.

Langkah selanjutnya menunjukkan cara menginstal X server itu.

Instal Cygwin / X di Windows

Cygwin / X menyediakan server X untuk Windows yang menampilkan aplikasi GUI yang berjalan pada Raspberry Pi.

  1. Unduh dan jalankan setup-x86_64.exedari situs web Cygwin .

  2. Untuk "Direktori Paket Lokal" Cygwin, Anda dapat menggunakannya C:\Users\me\AppData\Roaming\Cygwin.

  3. Pilih server di dekat Anda untuk mengunduh paket.

  4. Setel "Lihat" menjadi "Penuh" dan cari xinit.

  5. Di kolom "Baru", gunakan menu tarik-turun untuk mengubah nilai dari "Lewati" ke xinitversi terbaru:

Instal paket xinit dengan Cygwin

  1. Instal paket opensshdengan cara yang sama.

Sambungkan ke Raspberry Pi dari Windows

  1. Mulai server X menggunakan Windows' start menu: Cygwin-X → XWin Server. Ini tidak akan membuka jendela apa pun, tetapi Anda akan melihat dua ikon baru di baki sistem Anda:

Ikon server XWin di baki sistem

  1. Mulai terminal Cygwin: Cygwin → Cygwin64 Terminal

  2. Setel DISPLAYvariabel lingkungan ke tempat server X pada Windows berjalan:

    export DISPLAY=:0.0

  3. Terhubung ke Raspberry Pi Anda dengan penerusan X11:

    ssh -Y pi@raspberrypi

Login dengan Terminal Cygwin

Di dalam sesi SSH, Anda sekarang dapat memulai aplikasi X pada Raspberry Pi seperti Thonny :

Thonny diteruskan ke Windows

Atau, seperti yang pengguna1297 sebutkan dalam komentar pertanyaan, Anda dapat berlari x-session-manageruntuk meniru pengalaman yang Anda dapatkan saat menghubungkan ke Raspberry Pi melalui HDMI pada monitor eksternal:

Desktop Rasbpian dipasangkan ke Windows

Jika Anda ingin memulai aplikasi secara langsung tanpa terlebih dahulu mengetikkan namanya di shell, gunakan ini:

ssh -Y pi@raspberrypi x-session-manager

Di macOS

XQuartz menyediakan server X untuk macOS.

Instal XQuartz, logout dan kembali (untuk membuat nilai DISPLAYefektif baru), kemudian jalankan aplikasi dengan SSH dari Bash:

ssh -Y pi@raspberrypi thonny

Thonny di dalam macOS menggunakan XQuartz

Matthias Braun
sumber
1

Jika Anda sudah menjalankan server X pada Windows (seperti halnya Anda menggunakan Xming), maka sisi Windows sebagian besar sudah selesai (tetapi lihat di bawah untuk beberapa detail penting). Bit kunci yang tersisa adalah memberi tahu aplikasi X11 pada pi untuk mengirim data X11 mereka ke PC Windows Anda.

Ini dilakukan melalui DISPLAYvariabel lingkungan. Biasanya, jika server X dan aplikasi berjalan di komputer yang sama, DISPLAY hanya akan menentukan nomor server (misalnya :0jika Anda hanya menjalankan satu server X) atau mungkin server dan layar (mis :0.0.). Karena tidak ada alamat IP, ini memberi tahu pustaka X aplikasi bahwa server tersebut adalah lokal dan koneksi akan dibuat sesuai (mungkin melalui beberapa jenis transportasi memori bersama).

Untuk memberi tahu aplikasi agar mengirim data X11 ke node jarak jauh, sertakan alamat IP dalam DISPLAYvariabel. Sebagai contoh export DISPLAY=192.168.1.10:0,. Ini akan memberi tahu semua aplikasi X11 bahwa mereka perlu membuka koneksi TCP ke X server # 0 pada node 192.168.1.10. Nama host DNS baik-baik saja di sini, jika Anda mendapatkannya di jaringan Anda.

Dua potensi masalah

Seperti yang saya tulis di paragraf pertama, menjalankan Xming mungkin tidak cukup. Mungkin diperlukan konfigurasi tambahan.

Yang pertama adalah bahwa server X11 Anda harus dikonfigurasi untuk menerima koneksi dari node jarak jauh melalui TCP. Banyak server X yang didistribusikan hari ini (saya tidak tahu tentang Xming) hanya menerima koneksi dari aplikasi yang berjalan secara lokal kecuali jika Anda mengkonfigurasinya secara eksplisit. Ini adalah fitur keamanan, karena setiap soket terbuka adalah vektor potensial untuk serangan.

Yang kedua adalah bahwa server X11 Anda memelihara database host / pengguna yang diizinkan untuk terhubung. Anda perlu memasukkan alamat IP Raspberry Pi Anda ke daftar putih. Anda dapat melakukan ini dengan menjalankan xhostperintah dari Xming di Windows, misalnya, dari konsol yang berjalan di xterm. Anda juga dapat mengetik xhost +untuk menonaktifkan pemeriksaan keamanan ini, tetapi itu berbahaya karena akan memungkinkan aplikasi apa pun dari mana saja di dunia untuk membuka koneksi ke layar Anda. Jika Anda berada di belakang firewall pada LAN di mana Anda mempercayai semua orang (misalnya rumah Anda sendiri), itu pendekatan yang paling mudah, tetapi luangkan waktu untuk mengonfigurasi dengan benar xhostjika Anda tidak.

Alternatif: ssh -Y

Menggunakan pendekatan di atas, aplikasi X11 Anda akan mencoba membuka koneksi TCP ke server X Anda. Koneksi ini tidak aman. Seseorang pada paket pengintaian LAN Anda dapat mencegatnya.

Untuk mengatasi masalah ini, alih-alih mengatur variabel DISPLAY pada Raspberry pi, gunakan -Yparameter saat menghubungkannya (mis slogin -Y hostname.). Parameter -Y (seperti -X) akan membuat terowongan antara node untuk membawa lalu lintas X11. Ini akan menjaga lalu lintas X11 terenkripsi dan aman. Itu juga akan menetapkan variabel lingkungan DISPLAY sendiri sehingga aplikasi akan menggunakan terowongan. Ini juga dapat menghilangkan kebutuhan untuk mengacaukan xhostkarena (sejauh menyangkut server X Anda) koneksi berasal secara lokal (dari sisi yang berasal dari terowongan SSH).

David C.
sumber