Jalankan aplikasi pada mesin lokal dan tampilkan GUI pada tampilan jarak jauh

35

Apakah mungkin menjalankan aplikasi di desktop lokal saya tetapi menampilkan GUI di laptop saya (remote X)?

Saya bertanya-tanya apakah mungkin untuk meniru pengaturan dual-monitor menggunakan 2 mesin yang terhubung dan berbeda.

Saya telah menginstal sinergi dan saya dapat dengan mudah mengontrol laptop saya dengan keyboard / mouse desktop, tetapi saya juga ingin menjalankan sesuatu di desktop dan menampilkan GUI di layar laptop.

Dari pengalaman saya yang terbatas dengan X, saya tahu bahwa saya bisa menjalankan program pada mesin jarak jauh dan menggunakan tampilan yang pertama untuk menunjukkan output, tetapi tidak sebaliknya.

Setiap petunjuk akan sangat membantu. Terima kasih

PS Menjalankan XFCE 4.10 di Ubuntu 12.10

Vlad Balmos
sumber

Jawaban:

39

Varian A - Memotret X Windows ke DISPLAY lain:

  1. Pastikan, bahwa Xserver di Laptop Anda mulai mendengarkan koneksi tcp. Sayangnya X11-Networking dinonaktifkan secara default di sebagian besar distribusi. Karena Xserver dijalankan oleh manajer tampilan Anda (gdm, lightdm) ini harus dikonfigurasi di sana:

    Apa pun manajer tampilan yang Anda gunakan, beberapa file konfigurasi di / etc / mungkin akan berisi parameter XServer yang bertanggung jawab. Jalankan grep -r 'nolisten tcp' /etc/di Laptop Anda untuk mengetahui file konfigurasi mana yang bertanggung jawab dan hapus bagian di mana dikatakan -nolisten tcp(bukan seluruh baris, hanya parameter ini). Mulai ulang X di Laptop Anda.

    Laptop Anda sekarang harus memiliki tampilan yang berjalan pada tcp port 6000 (coba jalankan nmap -p6000 Laptoppada PC Desktop Anda, jika port tersebut dilaporkan sebagai "terbuka", Anda sampai sejauh ini).

  2. Jadikan X-display Anda tersedia untuk komputer desktop. X11 menggunakan mekanisme otentikasi untuk memberikan akses ke tampilan. Anda harus mengizinkan PC desktop untuk menembak Windows ke Laptop. Biasanya dengan bertukar cookie tampilan.

    Sebagai permulaan, lakukan langkah ini dengan tangan pada notebook Anda. Setelah Anda mendapatkan konsep dengan DISPLAYvariabel dan segalanya, Anda dapat melakukan ini melalui ssh.

    Cepat dan kotor: Anda dapat berjalan xhost +desktops.computers.ip.addressdi laptop Anda untuk memberikan akses X ke komputer desktop. Perhatikan bahwa setiap pengguna di komputer laptop Anda dapat menggunakan tampilan X laptop Anda dengan cara ini. Perhatikan bahwa ini sudah cukup yaitu untuk menginstal keylogger pada layar laptop Anda. Gunakan metode ini hanya untuk pengujian.

    Benar dan aman: jalankan xauth extract cookie-file :0di laptop Anda untuk mengekspor rahasia akses tampilan Anda ke "cookie-file". Transfer cookie ke mesin Desktop Anda. Lari xauth merge cookie-file. Atau dalam satu langkah singkat (dari desktop Anda) ssh Laptop xauth extract - :0 |xauth merge -Catatan: jika laptop dan desktop Anda berbagi direktori rumah yaitu melalui nfs Anda tidak perlu bertukar kredensial. Basis data kredensial adalah file .Xauthority di direktori home Anda, dan dapat dibagi di antara berbagai mesin.

  3. Jalankan program: Di terminal di PC desktop Anda jalankan export DISPLAY=Your.Laptops.IP.Address:0, jalankan program X apa pun di terminal yang sama. Itu akan muncul di layar notebook.

Varian B - Menggunakan SSH dengan twist.

SSH menyelesaikan penerusan X11 dengan meneruskan dalam soket X11 lokal (biasanya Unix Domain Socket) ke soket TCP lokal pada mesin jarak jauh, kemudian menegosiasikan cookie tampilan, kemudian mengatur DISPLAY-Environment pada mesin jarak jauh. Dengan cara ini semua lalu lintas X11 dienkripsi melalui ssh tunnel. Kasing penggunaan normal adalah untuk meneruskan tampilan lokal ke mesin jarak jauh (artinya memungkinkan aplikasi jarak jauh untuk menampilkan x windows secara lokal).

Keuntungan menggunakan ssh adalah, Anda tidak perlu memasukkan X-Server ke mode tcp listen (karena soket unix digunakan). Dan ssh menangani pertukaran kredensial.

  1. SSH ke laptop Anda dari komputer desktop Anda (Anda belum perlu menggunakan -X).
  2. Di remote shell enter, export DISPLAY=:0ini membuat tampilan yang sudah berjalan di notebook Anda tersedia untuk shell yang Anda dapatkan melalui ssh. Jika Anda menjalankan perintah X sekarang, itu sudah akan muncul di layar notebook Anda, tetapi masih berjalan di laptop Anda (cobalah untuk aman).
  3. Dari shell ini ssh kembali ke komputer desktop Anda, gunakan -X kali ini. Anda sekarang memiliki shell pada mesin di mana sesi ssh berasal tetapi kali ini dengan bekerja X. Jalankan xeyes atau xcalc untuk mengujinya.
  4. echo $DISPLAYmenunjukkan penunjukannya, tampilan laptop X Anda sekarang ada di komputer desktop Anda. Yaitu: 10 atau: 11.
  5. Anda dapat meminimalkan terminal sekarang. Setiap kali Anda memasukkan export DISPLAY=:10(lihat nomor tampilan apa yang Anda dapatkan) di komputer desktop Anda sekarang, setiap program yang Anda jalankan sesudahnya di shell yang sama akan muncul di layar notebook Anda.

    Varian ini mudah tetapi lambat, karena semua lalu lintas X11 diteruskan melalui SSH.

Varian C - Konsep asli yang asli:

Anda dapat menggunakan laptop Anda untuk membuka sesi desktop yang berjalan sepenuhnya di komputer desktop Anda.

  1. Konfigurasikan manajer tampilan di Desktop Anda untuk menjawab Siaran XDMCP. Cara melakukannya tergantung pada manajer tampilan Anda. Beberapa manajer tampilan sama sekali tidak mendukung ini, yaitu ramping. XDM, KDM, WDM, GDM mendukungnya.

  2. Mulai X-Server di Laptop Anda, yang meminta manajer tampilan dari desktop Anda. Entah X bersarang: Xephyr :1 -query desktopatau Xephyr :1 -broadcast Atau dengan mematikan X-Server Notebook Anda dan masuk ke Terminal Sistemsudo Xorg :0 -broadcast

    Manajer tampilan akan memastikannya, bahwa kredensial dihasilkan dan dipertukarkan dan semuanya. Selamat, sekarang Anda akan melihat jendela masuk yang disediakan oleh komputer desktop Anda.

Paul Hänsch
sumber
2
BTW. Semua Fungsi X11 yang luar biasa ini hanya akan berhenti berfungsi begitu Ubuntu beralih ke Wayland. Aplikasi waytive NAtive bahkan tidak dapat diteruskan melalui ssh lagi.
Paul Hänsch
6
Sangat ironis bahwa tidak ada toolchain grafis untuk mengontrol X-Server Anda? Jika Anda benar-benar ingin bekerja dengan GUI, Anda harus mendominasi baris perintah terlebih dahulu.
Paul Hänsch
Petunjuk Umum: Program pertama yang ingin Anda mulai di layar jarak jauh adalah aplikasi pemula. Yaitu lxpanel atau sesuatu. Ini menghemat banyak pekerjaan baris perintah.
Paul Hänsch
Apakah ini masih berfungsi untuk + 17 Ubuntu ... atau apakah prediksi Wayland terjadi?
Xen2050
19

Anda dapat menggunakan ssh X forwarding untuk mencapai tujuan Anda. Jika Anda berada di subnet yang sama daripada berhenti cepat.

Instal ssh server dan klien di laptop dan PC desktop Anda

sudo apt-get install ssh

Untuk terhubung ke PC desktop, buka terminal di laptop dan ketik berikut ini

ssh -X username@desktop_pc_ip

Dan Anda dapat memulai perangkat lunak apa pun menggunakan terminal, misalnya memulai Firefox, cukup ketik firefoxterminal.

OHLÁLÁ
sumber
2
Jangan lupa untuk memverifikasi bahwa file konfigurasi sshd (biasanya / etc / ssh / sshd_config) memiliki X11 Forwarding diatur ke yes juga.
Matrix Mole
Berikut ini adalah kasus penggunaan saya: Saya di desktop saya dan saya membuka Firefox, tetapi saya ingin jendela browser terbuka di layar laptop saya dan masih berjalan di desktop saya. Saya mencari fungsionalitas yang mirip dengan ruang kerja, tetapi alih-alih ruang kerja lokal (4 layar pada pc yang sama) untuk menggunakan ruang kerja jarak jauh (laptop)
Vlad Balmos
2
Anda juga dapat mencoba x2xpaket, Anda dapat menggunakan satu keyboard dan mouse di mesin yang berbeda. mis:ssh -X user@host x2x -west -to :0
OHLÁLÁ
@ iUngi saya sudah menggunakan sinergi untuk itu, terima kasih
Vlad Balmos
Ketahuilah bahwa dengan membuka akses ke server X desktop Anda, Anda memberikan akses jangkauan yang cukup luas ke mesin jarak jauh. Jika server Anda dikompromikan, ini juga dapat digunakan untuk masuk ke desktop Anda. Penerusan X11 bermanfaat, tetapi pikirkan apa yang Anda lakukan, dan jangan nyalakan secara default.
mc0e
7

Persiapan

(Anda melakukan ini hanya sekali)

Di desktop Anda instal server SSH

sudo apt-get install openssh-server


Dari laptop Anda:

ssh -X nama pengguna @ desktop_pc_ip

Di terminal Anda mendapatkan apa pun yang Anda jalankan akan berada di desktop Anda tetapi ditampilkan di laptop Anda. Jika Anda ingin melakukan hal yang sama saat duduk di desktop Anda (dan mengirim windows di laptop Anda) kemudian lanjutkan.

Di terminal Anda, Anda menjalankan

echo $ DISPLAY

Ini akan menunjukkan kepada Anda sesuatu seperti:

localhost:10.0

Dari desktop Anda:

Buka terminal dan jalankan

DISPLAY=:10.0 firefox

Ini akan mengirim firefoxjendela pada laptop Anda tetapi berjalan di desktop Anda. Pastikan angka yang Anda masukkan (mis. 10.0) Sama dengan echohasil

Nick Andrik
sumber
3

Anda melihat menggunakan kombinasi SSH dan layar kemudian untuk mendapatkan situasi yang Anda inginkan.

Di desktop Anda, instal layar:

sudo apt-get install screen

Dari sana, mulailah sesi layar baru:

layar

dan buka firefox di dalamnya:

firefox

Gunakan firefox semua yang Anda inginkan di desktop Anda, lalu ssh ke komputer Anda dari laptop Anda:

ssh -X username @ hostname

Ketik perintah berikut untuk melihat sesi layar mana yang telah Anda jalankan:

layar -l

Masuk ke sesi layar Anda (1234 akan menjadi jumlah layar -l memberi Anda)

layar -x 1234

Kemudian Anda dapat menggunakan firefox di laptop Anda dan menutup terminal di desktop Anda.

pengguna530873
sumber
mencobanya. membuka layar dari terminal, mulai firefox di desktop, kemudian sshed dari laptop ke desktop, terpasang sesi layar, tetapi saya tidak mendapatkan jendela di laptop, hanya output dari program yang sedang berjalan di layar.
Vlad Balmos
Anda mencampurnya. Tunggu ... setidaknya salah satu dari kalian melakukannya. Instal layar di komputer desktop Anda, gunakan notebook Anda ke ssh -Xdesktop Anda, mulai layar di sesi ssh, lepaskan dan biarkan sesi berjalan. Kemudian pasang kembali sesi layar dengan tangan di komputer desktop Anda dan jalankan sesuatu. Ini serupa dengan jawaban "SSH with a twist" saya. Menggunakan layar membuatnya sedikit lebih nyaman.
Paul Hänsch
3

Virtualgl akan membuat desktop (latar belakang) ekstra ( Gaya TightVNC) yang dapat Anda akses melalui klien VNC turbo . Ini akan berfungsi sebagai jenis desktop jarak jauh -> Tapi itu akan memutar video yang lancar melalui jaringan.

Jika Anda mencari cara untuk membongkar overhead CPU untuk koneksi jarak jauh, sehingga Anda dapat menjalankan aplikasi dari komputer di laptop Anda, maka itulah yang akan saya lakukan.

http://www.virtualgl.org/

Anda juga dapat mengekspor lingkungan desktop melalui SSH seperti / dude yang disebutkan di atas.

TardisGuy
sumber
Terima kasih. Terlihat menjanjikan. Saya akan melihat dan membuat Anda tetap diposting.
Vlad Balmos
Ya, "TurboVNC" (lebih tepatnya komponen VirtualGL) ADALAH hasil pencarian saya untuk program desktop jarak jauh yang memungkinkan saya bermain Video Game dan Film. Ini akan berfungsi dengan mudah sebagai monitor tambahan.
TardisGuy
1

Setelah beberapa penggalian online saya menemukan DMX

Dari halaman beranda

Xdmx adalah server proxy X yang menyediakan dukungan multi-kepala untuk beberapa tampilan yang terpasang pada mesin yang berbeda (masing-masing menjalankan server X khas). Ketika Xinerama digunakan dengan Xdmx, beberapa tampilan pada beberapa mesin disajikan kepada pengguna sebagai satu layar tunggal.

Vlad Balmos
sumber
1
ini akan menjadi jawaban yang lebih baik jika Anda dapat memberikan instruksi cara menginstal dan cara menggunakannya.
fossfreedom
XmetaX menyediakan fungsi serupa. Apakah ada alternatif untuk Xdmx dan XmetaX?
Mariusz
1

Ya itu mungkin. Saya mengambil kedua komputer linux dengan xclock diinstal pada komputer lokal. Saya mencoba menjalankan xclock secara lokal dan menunjukkan jam pada komputer linux jarak jauh.

reboot the remote machine
Disable firewall
Disable SELINUX
Check $DISPLAY variable value by command
echo $DISPLAY
Let say its value is :1
run command
xhost +

Now on local computer
xclock -display remote_machine_IP_address:1
Mian Asbat Ahmad
sumber