Uruchom aplikację na komputerze lokalnym i pokaż GUI na zdalnym ekranie

35

Czy można uruchomić aplikację na moim lokalnym pulpicie, ale wyświetlić GUI na moim laptopie (zdalny X)?

Zastanawiam się, czy można emulować konfigurację z dwoma monitorami za pomocą 2 różnych urządzeń podłączonych do sieci LAN.

Zainstalowałem synergię i mogę łatwo sterować moim laptopem za pomocą klawiatury / myszy na pulpicie, ale chciałbym również uruchomić coś na pulpicie i wyświetlić GUI na ekranie laptopa.

Z mojego ograniczonego doświadczenia z X wiem, że mogę uruchomić program na zdalnej maszynie i użyć wyświetlacza pierwszego do wyświetlenia wyniku, ale nie na odwrót.

Wszelkie wskazówki byłyby bardzo pomocne. Dziękuję Ci

PS z systemem XFCE 4.10 na Ubuntu 12.10

Vlad Balmos
źródło

Odpowiedzi:

39

Wariant A - Strzelanie do X okien na inny WYŚWIETLACZ:

  1. Dopilnuj, aby Xserver na twoim laptopie zaczął nasłuchiwać połączeń tcp. Niestety X11-Networking jest domyślnie wyłączony w większości dystrybucji. Ponieważ Xserver jest uruchamiany przez menedżera ekranu (gdm, lightdm), należy go tam skonfigurować:

    Niezależnie od tego, jakiego menedżera wyświetlania używasz, niektóre pliki konfiguracyjne w / etc / prawdopodobnie będą zawierać odpowiedzialny parametr XServer. Uruchom grep -r 'nolisten tcp' /etc/na swoim laptopie, aby dowiedzieć się, który plik konfiguracyjny jest odpowiedzialny i usuń część, w której mówi -nolisten tcp(nie całą linię, tylko ten parametr). Uruchom ponownie X na swoim laptopie.

    Twój laptop powinien teraz mieć ekran działający na porcie tcp 6000 (spróbuj uruchomić nmap -p6000 Laptopna komputerze stacjonarnym, jeśli port jest zgłaszany jako „otwarty”, zaszedłeś tak daleko).

  2. Udostępnij swój wyświetlacz X komputerowi stacjonarnemu. X11 używa mechanizmu uwierzytelniania, aby przyznać dostęp do wyświetlacza. Musisz pozwolić komputerowi stacjonarnemu strzelać z systemu Windows na laptopa. Zwykle poprzez wymianę wyświetlanego pliku cookie.

    Na początek wykonaj ten krok z rękami na swoim notebooku. Po otrzymaniu koncepcji DISPLAYzmiennej i wszystkiego, możesz to zrobić poprzez ssh.

    Szybko i brudno: Możesz uruchomić xhost +desktops.computers.ip.addressna swoim laptopie, aby przyznać X dostęp do komputera stacjonarnego. Pamiętaj, że każdy użytkownik komputera przenośnego może korzystać z laptopa X w ten sposób. Pamiętaj, że jest to wystarczające, tj. Do zainstalowania keyloggera na wyświetlaczu twojego laptopa. Tej metody należy używać tylko do testowania.

    Prawidłowe i bezpieczne: uruchom xauth extract cookie-file :0na swoim laptopie, aby wyeksportować tajny klucz dostępu do wyświetlacza do „pliku cookie”. Przenieś plik cookie na komputer stacjonarny. Uruchom xauth merge cookie-file. Lub w jednym krótkim kroku (z komputera) ssh Laptop xauth extract - :0 |xauth merge -Uwaga: jeśli Twój laptop i komputer współużytkują katalog domowy, tj. Za pośrednictwem systemu plików NFS, nie musisz wymieniać żadnych danych uwierzytelniających. Baza danych logowania to plik .Xauthority w katalogu domowym i może być współużytkowany przez różne komputery.

  3. Uruchom program: w terminalu na komputerze stacjonarnym export DISPLAY=Your.Laptops.IP.Address:0uruchom dowolny program X w tym samym terminalu. Powinien pojawić się na wyświetlaczu notebooków.

Wariant B - Korzystanie z SSH z niespodzianką.

SSH realizuje przekazywanie X11 poprzez przekazywanie w lokalnym gnieździe X11 (zwykle w Uniksowej Domenie Domeny) do lokalnego gniazda TCP na zdalnym komputerze, następnie negocjowanie wyświetlanego pliku cookie, a następnie ustawianie środowiska DISPLAY na zdalnym komputerze. W ten sposób cały ruch X11 jest szyfrowany w tunelu ssh. Normalnym przypadkiem użycia jest przekazanie lokalnego wyświetlacza do zdalnego komputera (co oznacza, że ​​zdalne aplikacje mogą wyświetlać x okna lokalnie).

Zaletą używania ssh jest to, że nie trzeba przełączać X-Servera w tryb nasłuchiwania tcp (ponieważ używane jest gniazdo unix). A ssh obsługuje wymianę referencji.

  1. SSH do laptopa z komputera stacjonarnego (nie musisz jeszcze używać -X).
  2. Wpisz w zdalnej powłoce, export DISPLAY=:0co powoduje, że już uruchomiony ekran twojego notebooka jest dostępny dla powłoki otrzymanej przez ssh. Jeśli uruchomisz teraz dowolne polecenie X, pojawi się ono już na ekranie notebooka, ale nadal będzie działać na laptopie (wypróbuj je, aby było bezpieczne).
  3. Z tej powłoki ssh z powrotem na komputer stacjonarny, użyj -X tym razem. Masz teraz powłokę na komputerze, z którego pochodzi sesja ssh, ale tym razem z działającym X. Uruchom xeyes lub xcalc, aby ją przetestować.
  4. echo $DISPLAYpokazuje oznaczenie, Twój laptop X wyświetla teraz na komputerze stacjonarnym. Tj .: 10 lub: 11.
  5. Możesz teraz zminimalizować terminal. Za każdym razem, gdy wprowadzisz export DISPLAY=:10(zobacz, jaki masz numer) na komputerze stacjonarnym, każdy program uruchamiany później w tej samej powłoce pojawi się na ekranie notebooków.

    Ten wariant jest łatwy, ale wolny, ponieważ cały ruch X11 jest przekazywany przez SSH.

Wariant C - Oryginalna koncepcja cienkiego klienta:

Możesz użyć laptopa, aby otworzyć sesję stacjonarną uruchomioną całkowicie na komputerze stacjonarnym.

  1. Skonfiguruj menedżera wyświetlania na pulpicie, aby odpowiadał na transmisje XDMCP. Jak to zrobić, zależy od menedżera ekranu. Niektóre menedżery wyświetlania w ogóle tego nie obsługują, np. Slim. Obsługują go XDM, KDM, WDM, GDM.

  2. Uruchom X-Server na swoim laptopie, który żąda menedżera wyświetlania z pulpitu. Albo zagnieżdżony X: Xephyr :1 -query desktoplub Xephyr :1 -broadcast Lub poprzez zamknięcie X-Server notebooka i wejście na terminal systemowysudo Xorg :0 -broadcast

    Menedżer wyświetlania dopilnuje, aby poświadczenia były generowane i wymieniane, i wszystko. Gratulacje, teraz powinieneś zobaczyć okno logowania dostarczone przez komputer stacjonarny.

Paul Hänsch
źródło
2
BTW. Cała ta wspaniała funkcjonalność X11 przestanie działać po przejściu Ubuntu na Wayland. NAtive aplikacje Wayland nie mogą być nawet przekazywane dalej przez ssh.
Paul Hänsch
6
Czy to nie ironiczne, że nie ma graficznego zestawu narzędzi do kontrolowania twojego X-Servera? Jeśli naprawdę chcesz pracować z GUI, musisz zdominować linię poleceń.
Paul Hänsch
Wskazówka ogólna: Pierwszym programem, który możesz chcieć uruchomić na zdalnym wyświetlaczu, jest starter aplikacji. Tj. Lxpanel czy coś. To oszczędza wiele pracy z wierszem poleceń.
Paul Hänsch
Czy to nadal działa w przypadku Ubuntu 17's + ... czy też spełniło się przewidywanie Waylanda?
Xen2050,
19

Możesz użyć przekierowania ssh X, aby osiągnąć swój cel. Jeśli jesteś w tej samej podsieci, to szybko się kończy.

Zainstaluj serwer i klient ssh na laptopie i komputerze stacjonarnym

sudo apt-get install ssh

Aby połączyć się z komputerem stacjonarnym, otwórz terminal na laptopie i wpisz następujące polecenie

ssh -X username@desktop_pc_ip

I możesz uruchomić dowolne oprogramowanie za pomocą terminala, na przykład uruchamiając Firefoksa, po prostu wpisz firefoxterminal.

O LA LA
źródło
2
Nie zapomnij sprawdzić, czy pliki konfiguracyjne sshd (zwykle / etc / ssh / sshd_config) mają również X11 Forwarding ustawione na yes.
Matrix Mole
Oto mój przykład użycia: jestem na pulpicie i otwieram na przykład Firefoksa, ale chcę, aby okno przeglądarki otworzyło się na ekranie laptopa i nadal działało na pulpicie. Szukam funkcjonalności podobnej do obszarów roboczych, ale zamiast lokalnego obszaru roboczego (4 ekrany na tym samym komputerze) do korzystania ze zdalnego obszaru roboczego (laptopa)
Vlad Balmos
2
Możesz także wypróbować x2xpakiet, możesz użyć jednej klawiatury i myszy na innym komputerze. np .:ssh -X user@host x2x -west -to :0
OHLÁLÁ
@iUngi Już używam do tego synergii, dzięki i tak
Vlad Balmos
Pamiętaj, że otwierając dostęp do serwera X na pulpicie, zapewniasz dość szeroki dostęp do zdalnego komputera. Jeśli serwer został przejęty, można go również użyć do uzyskania dostępu do pulpitu. Przekazywanie X11 jest przydatne, ale zastanów się, co robisz i nie włączaj go domyślnie.
mc0e,
7

Przygotowanie

(robisz to tylko raz)

Na swoim komputerze zainstaluj serwer SSH

sudo apt-get install openssh-server


Z laptopa:

ssh -X nazwa użytkownika @ desktop_pc_ip

W terminalu masz wszystko, co uruchomisz, będzie na pulpicie, ale wyświetlane na laptopie. Jeśli chcesz zrobić to samo siedząc na pulpicie (i wysłać okna na laptopie), to kontynuuj.

Na terminalu biegniesz

echo $ DISPLAY

To pokaże ci coś takiego:

localhost:10.0

Z pulpitu:

Otwórz terminal i uruchom

DISPLAY=:10.0 firefox

To powinno wysłać firefoxokno na twoim laptopie, ale działającym na pulpicie. Upewnij się, że wprowadzona liczba (np. 10.0) Jest taka sama jak w echowyniku

Nick Andrik
źródło
3

Chcesz użyć kombinacji SSH i screena, aby uzyskać pożądaną sytuację.

Na pulpicie zainstaluj ekran:

sudo apt-get ekran instalacji

Stamtąd rozpocznij nową sesję ekranu:

ekran

i otwórz w nim firefox:

Firefox

Używaj Firefoxa, ile chcesz na pulpicie, a następnie ssh do komputera z laptopa:

ssh -X nazwa użytkownika @ nazwa hosta

Wpisz następujące polecenie, aby zobaczyć, które sesje ekranu są uruchomione:

screen -ls

Zaloguj się do sesji ekranowej (1234 to liczba, którą podał Ci ekran)

ekran -x 1234

Następnie możesz użyć Firefoxa na swoim laptopie i zamknąć terminal na pulpicie.

użytkownik530873
źródło
próbowałem tego. otworzyłem ekran z terminala, uruchomiłem Firefoksa na pulpicie, a następnie przełączyłem z laptopa na pulpit, podłączyłem sesję ekranu, ale nie dostaję żadnego okna na laptopie, tylko dane wyjściowe z uruchomionego programu na ekranie.
Vlad Balmos
Mieszałeś to. Poczekaj ... przynajmniej jeden z was to zrobił. Zainstaluj ekran na komputerze stacjonarnym, użyj notebooka na ssh -Xpulpicie, uruchom ekran w sesji ssh, odłącz go i pozostaw sesję uruchomioną. Następnie ponownie podłącz sesję ekranową rękami na komputerze i uruchom coś. Jest to podobne do mojej odpowiedzi „SSH z niespodzianką”. Korzystanie z ekranu czyni go bardziej wygodnym.
Paul Hänsch
3

Virtualgl utworzy dodatkowy (w tle) pulpit (styl TightVNC) , do którego można uzyskać dostęp za pośrednictwem klienta VNC turbo . Będzie działać jako umowa typu zdalnego pulpitu -> Ale będzie odtwarzać płynne wideo przez sieć.

Jeśli szukasz sposobu na odciążenie procesora dla połączenia zdalnego, aby móc uruchamiać aplikacje z komputera na laptopie, to właśnie zrobiłbym to.

http://www.virtualgl.org/

Możesz także wyeksportować środowisko pulpitu za pośrednictwem SSH, jak wyżej wspomniano / koleś.

TardisGuy
źródło
Dziękuję Ci. Wygląda obiecująco. Rzucę okiem i będę cię informować.
Vlad Balmos
Tak, „TurboVNC” (dalej jego komponent VirtualGL) JEST wynikiem moich poszukiwań programu do zdalnego pulpitu, który pozwoliłby mi grać w gry wideo i filmy. Będzie z łatwością działać jako dodatkowy monitor.
TardisGuy,
1

Po kilku dalszych kopaniach online natknąłem się na DMX

Ze strony głównej

Xdmx to serwer proxy X, który zapewnia obsługę wielu głowic dla wielu wyświetlaczy podłączonych do różnych komputerów (z których każdy działa na typowym serwerze X). Gdy Xinerama jest używana z Xdmx, wiele wyświetlaczy na wielu komputerach jest prezentowanych użytkownikowi jako pojedynczy zunifikowany ekran.

Vlad Balmos
źródło
1
byłaby to lepsza odpowiedź, jeśli możesz podać instrukcje dotyczące instalacji i użytkowania.
fossfreedom
XmetaX zapewnia podobne funkcjonalności. Czy jest jakaś alternatywa dla Xdmx i XmetaX?
Mariusz
1

Tak to mozliwe. Biorę oba komputery z systemem Linux z xclock zainstalowanym na komputerze lokalnym. Próbuję uruchomić xclock lokalnie i wyświetlić zegar na zdalnym komputerze z systemem Linux.

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
źródło