Uygulamayı yerel makinede çalıştırın ve GUI'yi uzak ekranda gösterin


35

Yerel masaüstümde bir uygulama çalıştırmak mümkün ancak dizüstü bilgisayarımda GUI görüntüleyebiliyor mu (uzak X)?

İki ayrı lan bağlı makineyi kullanarak bir çift monitör kurulumunu taklit etmenin mümkün olup olmadığını merak ediyorum.

Sinerji kurdum ve dizüstü bilgisayarımı masaüstü klavyesi / faresi ile kolayca kontrol edebiliyorum, ancak masaüstünde bir şey çalıştırmak ve dizüstü bilgisayar ekranında GUI'yi görüntülemek istiyorum.

X konusundaki sınırlı deneyimimden, uzaktaki bir makinede bir program çalıştırabilirim ve çıktıyı göstermek için ilk ekranını kullanabilirim, ancak tersini yapamayacağımı biliyorum.

Herhangi bir işaretçi çok yardımcı olacaktır. teşekkür ederim

PS Xunti 4.10'u Ubuntu 12.10'da Çalıştırıyor

Yanıtlar:


39

Değişken A - X Windows'u başka bir EKRAN'a çekmek:

  1. Dizüstü bilgisayarınızdaki Xserver'ın tcp bağlantılarını dinlemeye başladığına bakın. Ne yazık ki, X11-Networking çoğu dağıtımda varsayılan olarak devre dışıdır. Xserver, ekran yöneticiniz (gdm, lightdm) tarafından başlatıldığından, bunun burada yapılandırılması gerekir:

    Kullandığınız ekran yöneticisi ne olursa olsun, / etc / içindeki bir yapılandırma dosyası muhtemelen sorumlu XServer parametresini içerecektir. grep -r 'nolisten tcp' /etc/Hangi config dosyasının sorumlu olduğunu bulmak için dizüstü bilgisayarınızı çalıştırın ve yazdığı kısmı kaldırın -nolisten tcp(tüm satırı değil, sadece bu parametreyi). Dizüstü bilgisayarınızda X'i yeniden başlatın.

    Dizüstü bilgisayarınızda şimdi tcp bağlantı noktası 6000'de çalışan bir ekran olmalıdır ( nmap -p6000 Laptopbağlantı noktası "açık" olarak bildirildiyse Masaüstü Bilgisayarınızda çalışmayı deneyin ).

  2. X ekranınızı masaüstü bilgisayar için uygun duruma getirin. X11, bir ekrana erişim vermek için bir kimlik doğrulama mekanizması kullanır. Masaüstü PC'nin Windows'u Windows'a Dizüstü Bilgisayar'a çekmesine izin vermelisiniz. Normalde bir ekran çerezini değiştirerek.

    Yeni başlayanlar için bu adımı dizüstü bilgisayarınızda elinizle gerçekleştirin. Kavramı DISPLAYdeğişken ve her şeyle elde ettikten sonra , bunu ssh ile yapabilirsiniz.

    Çabuk ve kirli: xhost +desktops.computers.ip.addressMasaüstü bilgisayarınıza X erişimi vermek için dizüstü bilgisayarınızı çalıştırabilirsiniz . Not o her kullanıcı için dizüstü bilgisayarda dizüstü kullanabilirsiniz X bu şekilde gösterilecektir. Bunun yeterli olduğunu, yani dizüstü bilgisayarınızın ekranına bir keylogger yüklemek için olduğunu unutmayın. Bu yöntemi yalnızca test için kullanın.

    Doğru ve güvenli: xauth extract cookie-file :0Ekran erişim sırrınızı "çerez dosyasına" aktarmak için dizüstü bilgisayarınızı çalıştırın . Çerezleri Masaüstü makinenize aktarın. Run xauth merge cookie-file. Veya kısa bir adımda (masaüstünüzden) ssh Laptop xauth extract - :0 |xauth merge -Not: Dizüstü bilgisayarınız ve masaüstünüz bir ana dizini paylaşıyorsa, yani nfs aracılığıyla herhangi bir kimlik bilgisi almanıza gerek yoktur. Kimlik bilgisi veritabanı, ev dizininizdeki .Xauthority dosyasıdır ve farklı makineler arasında paylaşılabilir.

  3. Programı çalıştırın: Masaüstü PC'nizdeki bir terminalde, export DISPLAY=Your.Laptops.IP.Address:0herhangi bir X programını aynı terminalde çalıştırın. Notebook ekranında görünmelidir.

Değişken B - SSH'yi bükümle kullanma.

SSH, X11'i yerel bir X11 soketine (normalde bir Unix Etki Alanı Soketi) uzak makinedeki yerel bir TCP soketine ileterek, ardından ekran çerezini görüşerek, ardından uzak makinedeki DISPLAY-Environment'i ayarlayarak X11 iletmeyi gerçekleştirir. Bu şekilde tüm X11 trafiği ssh tüneli üzerinden şifrelenir. Normal kullanım durumu, yerel ekranı uzak makineye iletmektir (bu, uzaktaki uygulamaların yerelde x pencere göstermesine izin vermek anlamına gelir).

Ssh kullanmanın avantajı, X-Sunucunuzu tcp dinleme moduna sokmanıza gerek kalmamasıdır (unix soketi kullanıldığından). Ve ssh, kimlik bilgilerini değiştirir.

  1. SSH dizüstü bilgisayarınıza masaüstü bilgisayarınızdan (henüz -X kullanmanız gerekmez).
  2. Uzaktaki kabukta export DISPLAY=:0bu, dizüstü bilgisayarınızda zaten çalışmakta olan ekranın ssh üzerinden aldığınız kabuğu kullanmasını sağlar. Şimdi herhangi bir X komutunu çalıştırırsanız, zaten dizüstü bilgisayarınızın ekranında görünecek, ancak yine de dizüstü bilgisayarınızda çalışacak (güvenli olmasını deneyin).
  3. Bu kabuk ssh'den masaüstü bilgisayarınıza geri dönün, bu sefer -X kullanın. Şimdi makinede ssh oturumunun geldiği makinede bir kabuk var ama bu sefer X çalışarak. Xeyes veya xcalc komutunu çalıştırın.
  4. echo $DISPLAYAtama gösterir, dizüstü bilgisayarlar X ekran şimdi masaüstü bilgisayarınızda. Yani: 10 veya: 11
  5. Şimdi terminali küçültebilirsiniz. export DISPLAY=:10Masaüstü bilgisayarınızda şimdi ne zaman girerseniz (hangi ekran numarasına sahip olduğunuzu görün), daha sonra aynı kabukta çalıştırdığınız her program dizüstü bilgisayarınızın ekranında görünecektir.

    Bu Varyantı kolay ancak yavaş, çünkü tüm X11 trafiği SSH üzerinden iletiliyor.

Varyant C - Orijinal incelik kavramı:

Tamamen masaüstü bilgisayarınızda çalışan bir masaüstü oturumu açmak için dizüstü bilgisayarınızı kullanabilirsiniz.

  1. Masaüstünüzdeki ekran yöneticisini XDMCP Yayınlarına yanıt verecek şekilde yapılandırın. Bunun nasıl yapılacağı ekran yöneticinize bağlıdır. Bazı ekran yöneticileri bunu desteklemiyor, yani zayıf. XDM, KDM, WDM, GDM bunu destekliyor.

  2. Dizüstü bilgisayarınızda, görüntü yöneticisini masaüstünüzden isteyen bir X-Server başlatın. Yuvalanmış bir X: Xephyr :1 -query desktopveya Xephyr :1 -broadcast Veya Dizüstü Bilgisayar X-Sunucunuzu kapatıp Sistem Terminaline girereksudo Xorg :0 -broadcast

    Ekran yöneticisi, kimlik bilgilerinin üretildiğini ve değiştirildiğini ve her şeyi görecektir. Tebrikler, şimdi masaüstü bilgisayarınız tarafından sağlanan bir giriş penceresi görmelisiniz.


2
BTW. Tüm bu harika X11 İşlevselliği, Ubuntu Wayland'a geçtiğinde çalışmayı bırakacaktır. Yapay yol uygulamaları artık ssh ile yönlendirilemiyor.
Paul Hänsch

6
X-Sunucunuzu kontrol edecek hiçbir grafik alet zincirinin olmaması ironik değil mi? Eğer gerçekten GUI'lerle çalışmak istiyorsanız, önce komut satırına hakim olmalısınız.
Paul Hänsch

Genel İpucu: Uzak ekranınızda başlatmak isteyebileceğiniz ilk program, bir uygulama başlatıcıdır. Ixpanel ya da başka bir şey. Bu savel komut satırı çok çalışır.
Paul Hänsch

Bu hala Ubuntu 17's + için çalışıyor mu ... ... ya da Wayland tahmini geçiyor mu?
Xen2050,

19

Hedefinize ulaşmak için ssh X yönlendirme özelliğini kullanabilirsiniz. Aynı alt ağdaysanız, hızlı bir şekilde çıkılır.

Dizüstü ve masaüstü bilgisayarınıza ssh sunucusunu ve istemciyi kurun

sudo apt-get install ssh

Masaüstü PC'ye bağlanmak için dizüstü bilgisayarda bir terminal açın ve aşağıdakileri yazın

ssh -X username@desktop_pc_ip

Terminali kullanarak herhangi bir yazılımı başlatabilirsiniz, örneğin Firefox'u başlatmak, sadece firefoxterminali yazmak.


2
Sshd config dosyalarının (genellikle / etc / ssh / sshd_config) X11Forwarding'in de evet olarak ayarlanmış olduğunu doğrulamayı unutmayın.
Matrix Mole

İşte kullanım durumum: Masaüstümdeyim ve örneğin Firefox'u açıyorum, ancak tarayıcı penceresinin dizüstü bilgisayar ekranımda açılmasını ve hala masaüstümde çalışmasını istiyorum. Ben çalışma alanlarına benzer bir işlevsellik için arıyorum, ancak bunun yerine bir yerel çalışma (aynı pc 4 ekranlar) uzak bir çalışma alanı (dizüstü bilgisayar) kullanmak
Vlad Balmos

2
Ayrıca x2xpaketi deneyebilir, farklı makinelerde bir klavye ve fare kullanabilirsiniz. örn .:ssh -X user@host x2x -west -to :0
OHLÁLÁ

@IUngi zaten bunun için sinerji kullanıyorum, yine de teşekkürler
Vlad Balmos

Masaüstünüzün X sunucusuna erişim açarak, uzak makineye oldukça geniş bir erişim alanı verdiğinizi unutmayın. Sunucunuz tehlikede ise, bu masaüstünüze de girmek için kullanılabilir. X11 yönlendirme yararlıdır, ancak ne yaptığınızı düşünün ve varsayılan olarak açmayın.
mc0e

7

Hazırlık

(bunu sadece bir kez yaparsınız)

Masaüstünüzde SSH sunucusunu kurun

sudo apt-get install openssh-server'ı kurar


Dizüstü bilgisayarınızdan:

ssh -X kullanıcı adı @ desktop_pc_ip

Terminalde çalıştığınız her şeyi elde edersiniz, masaüstünüzde olur ama dizüstü bilgisayarınızda görüntülenir. Masaüstünüzde otururken aynı şeyi yapmak istiyorsanız (ve dizüstü bilgisayarınıza pencereleri gönderin).

Terminalinde koşarsın

echo $ DISPLAY

Bu size şöyle bir şey gösterecektir:

localhost:10.0

Masaüstünüzden:

Bir terminal aç ve koş

DISPLAY=:10.0 firefox

Bu firefox, dizüstü bilgisayarınıza bir pencere göndermeli ancak masaüstünüzde çalışmalıdır. Emin koymak numarası (örn olun 10.0) aynıdır echosonucu


3

İstediğiniz durumu elde etmek için SSH ve ekranın bir kombinasyonunu kullanmayı düşünüyorsunuz.

Masaüstünde ekran yükleyin:

sudo apt-get install ekranı

Oradan yeni bir ekran oturumu başlatın:

ekran

ve içindeki firefox'u açın:

firefox

Masaüstünde istediğin kadar firefox kullan, ardından dizüstü bilgisayarınızdan bilgisayarınıza ssh yazın:

ssh -X kullanıcı adı @ hostname

Hangi ekran oturumunu çalıştırdığınızı görmek için aşağıdaki komutu yazın:

ekran-l

Ekran oturumunuza giriş yapın (1234, size verilen ekranın numarasıdır)

ekran -x 1234

Ardından dizüstü bilgisayarınızda firefox kullanabilir ve masaüstünüzdeki terminali kapatabilirsiniz.


bunu denedim. Terminalden ekranı açtı, masaüstünde firefox'u başlattı, daha sonra dizüstü bilgisayardan masaüstüne girdi, ekran oturumunu ekledi, ancak dizüstü bilgisayar üzerinde herhangi bir pencere göremiyorum, sadece ekrandaki çalışan programdan çıktı.
Vlad Balmos

Karıştırdın. Bekle ... en az biriniz yaptı. Masaüstü bilgisayarınıza ekran yükleyin, dizüstü bilgisayarınızı masaüstünüze kullanın ssh -X, ekranı ssh oturumunda başlatın, ayırın ve oturumu açık bırakın. Ardından, ekran oturumunu masaüstü bilgisayarınızdaki ellerle yeniden takın ve bir şeyler çalıştırın. Bu benim "twist ile SSH" cevabımı benzer. Ekranı kullanmak biraz daha uygun hale getirir.
Paul Hänsch

3

Virtualgl , bir turbo VNC istemcisi aracılığıyla erişebileceğiniz ekstra (arka plan) bir masaüstü (TightVNC Style) oluşturacaktır . Uzak masaüstü tipi bir anlaşma olarak işlev görür -> Ancak bir ağ üzerinden düzgün video oynatacaktır .

Uzak bir bağlantı için CPU ek yükünü boşaltmanın bir yolunu arıyorsanız , bilgisayarınızdan dizüstü bilgisayarınızda uygulamaları çalıştırabilirsiniz, o zaman ne yapardım.

http://www.virtualgl.org/

Ayrıca, masaüstü ortamını yukarıda belirtilen / dude olarak SSH ile dışa aktarabilirsiniz.


Teşekkür ederim. Umut verici görünüyor. Ben bir göz atacağım ve seni haberdar edeceğim.
Vlad Balmos

Evet, "TurboVNC" (VirtualGL bileşeni), Video Oyunları ve Filmler oynamama izin verecek uzak bir masaüstü programı aramamın sonucudur. Ekstra monitör olarak kolayca işlev görür.
TardisGuy

1

Çevrimiçi biraz daha kaztıktan sonra DMX’in karşısına geldim

Ana sayfadan

Xdmx, farklı makinelere (her biri tipik bir X sunucusu çalıştırıyor) bağlı birden fazla ekran için çoklu kafa desteği sağlayan proxy X sunucusudur. Xinerama Xdmx ile birlikte kullanıldığında, birden fazla makinedeki çoklu ekranlar kullanıcıya tek bir birleşik ekran olarak sunulur.


1
nasıl kurulacağı ve nasıl kullanılacağı konusunda talimatlar verebilirseniz, bu daha iyi bir cevap olacaktır.
fossfreedom

XmetaX benzer işlevleri sağlar. Xdmx ve XmetaX'a alternatif var mı?
Mariusz

1

Evet mümkün. Yerel bilgisayarda yüklü xclock ile her iki linux bilgisayarı alıyorum. Xclock'u yerel olarak çalıştırmaya ve saati uzaktaki Linux bilgisayarında göstermeye çalışıyorum.

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
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.