Po SSH lokalnie na moim komputerze (nie pytaj, to obejście), nie mogę uruchomić aplikacji graficznych bez uruchamiania:
export DISPLAY=:0.0
Jeśli najpierw uruchomię to, a następnie uruchomię aplikację graficzną, wszystko się ułoży. Jeśli nie, to nie działa, nie ma wyświetlacza do podłączenia.
Czy istnieje polecenie wyświetlania wszystkich dostępnych ekranów (tj. Wszystkich możliwych wartości) na komputerze?
( DISPLAY=:0 yourapp & )
.w
. Więcej informacji: wymienić istniejące X wyświetlane nazwy?Odpowiedzi:
Jeśli chcesz, aby połączenie X było przekazywane przez SSH, musisz włączyć je zarówno po stronie serwera, jak i klienta. (W zależności od dystrybucji, może być włączona lub wyłączona domyślnie). Po stronie serwera, upewnij się, że masz
X11Forwarding yes
w/etc/sshd_config
(lub/etc/ssh/sshd_config
lub wszędzie tam, gdzie jest plik konfiguracyjny). Po stronie klienta przekaż-X
opcję dossh
polecenia lub wprowadźForwardX11
swoją~/.ssh/config
.Jeśli uruchomisz
ssh -X localhost
, powinieneś zobaczyć$DISPLAY
(prawdopodobnie)localhost:10.0
. Porównaj z:0.0
, co jest wartością, gdy nie masz połączenia przez SSH. (.0
Część można pominąć; jest to numer ekranu, ale rzadko używa się wielu ekranów.) Istnieją dwie formy wyświetlaczy X, z którymi możesz się kiedykolwiek spotkać::
.:
.Za pomocą
ssh -X localhost
można uzyskać dostęp do serwera X za pośrednictwem obu ekranów, ale aplikacje będą używać innej metody::NUMBER
uzyskuje dostęp do serwera za pośrednictwem lokalnych gniazd i pamięci współużytkowanej, podczas gdyHOSTNAME:NUMBER
uzyskuje dostęp do serwera przez TCP, który jest wolniejszy i wyłącza niektóre rozszerzenia.Pamiętaj, że potrzebujesz formy autoryzacji dostępu do serwera X, zwanej ciasteczkiem i zwykle przechowywanej za kulisami w pliku
~/.Xauthority
. Jeśli używasz ssh, aby uzyskać dostęp do innego konta użytkownika lub jeśli twoja dystrybucja umieszcza pliki cookie w innym pliku, może się okazać, żeDISPLAY=:0
to nie działa w sesji SSH (alessh -X
będzie, jeśli jest włączone na serwerze; nigdy nie trzeba zadzierać zXAUTHORITY
kiedy robissh -X
). Jeśli to jest problem, musisz ustawićXAUTHORITY
zmienną środowiskową lub uzyskać pliki cookie drugiego użytkownika .Aby odpowiedzieć na twoje aktualne pytanie:
Lokalne wyświetlacze odpowiadają gniazdu wejściowemu
/tmp/.X11-unix
.Zdalne wyświetlacze odpowiadają otwartym portom TCP powyżej 6000; dostęp do numeru N na komputerze M odbywa się poprzez połączenie z portem TCP 6000 + N na komputerze M. Z samego komputera M:
(Reszta tego punktu jest interesująca tylko dla naukowców.)
Z innego komputera możesz użyć
nmap -p 6000-6099 host_name
do sondowania otwartych portów TCP w zwykłym zakresie. W dzisiejszych czasach rzadko serwery X nasłuchują na gnieździe TCP, szczególnie poza interfejsem pętli zwrotnej.Ściśle mówiąc, inna aplikacja może korzystać z portu w zakresie zwykle używanym przez serwery X. Możesz stwierdzić, czy serwer X nasłuchuje, sprawdzając, który program ma otwarty port.
Jeśli pokazuje to coś niejednoznacznego
sshd
, nie ma sposobu, aby się upewnić, czy jest to serwer X, czy przypadek.źródło
Wyświetlenie jest pierwszym argumentem do
Xorg
.ps
Następnie możesz sięXorg
wyrzucić.Następnie możesz to zrobić
awk
w dowolnym formacie.źródło
ps aux |grep X
pracował dla mnie lepiejw
pokazuje wszystkim zalogowanym i ich wyświetlenie.DISPLAY=:0 netsurf "https://medium.com/"
... lub użyj goexport DISPLAY=:0
do udostępnienia var procesowi, a nie tylko powłoce[Edycja: Uruchomiłem instancję Xnest, aby zobaczyć, czy to złapie - to nie; przechwytuje tylko powłoki logowania („w” jest skrótem od „kto”). Wróć do tablicy kreślarskiej.] [Edytuj: Znaleziono:
]
źródło
ps xeww | grep DISPLAY=:1024
teraz to dziwne. Korzystam również z Chrome-Remote-Desktop na wyświetlaczu 20.w
nie działa, jeśli na serwerze x nie działa żadna aplikacja (w tym brak menedżera okien i pulpitu). Alels /tmp/.X11-unix
działa.wykona zadanie, wymieniając wszystkie aktualne WYŚWIETLACZE. Możesz także zobaczyć przypisane ekrany dla konkretnego użytkownika ($ usr) za pomocą:
źródło
ps e -u $USER | grep -Po " DISPLAY=[\.0-9A-Za-z:]* " | sort -u
?W
/tmp
folderze mogą znajdować się również.X??-lock
pliki ze??
wskazaniem numerów sesji.Musisz je usunąć, jeśli chcesz ponownie użyć numeru sesji.
Można je zobaczyć,
ls -a
jak zwykle używane są pliki zaczynające się od a.
są ukryte.źródło