Zdalny dostęp GUI do komputera z Linuksem przy użyciu Tightvnc z systemd
On 13 stycznia, 2022 by adminTo jest przewodnik do instalacji TightVNC na Raspberry Pi. Najnowsza wersja Raspbian teraz zawiera RealVNC, który jest alternatywnym narzędziem pulpitu zdalnego. Jeśli wolisz używać RealVNC to można go łatwo włączyć poprzez narzędzie raspi-config, ten przewodnik będzie przydatny dla tych, którzy chcą zrozumieć o tworzeniu innych aplikacji do uruchamiania na starcie poprzez systemd.
Linia poleceń jest świetnym sposobem na zarządzanie zdalnym komputerem z Linuksem jeśli nie masz nic przeciwko wpisywaniu komend, ale czasami musisz być w stanie zobaczyć GUI. Krótko po bardzo długim kablu jednym z najlepszych sposobów na zrobienie tego jest użycie protokołu VNC (Virtual Network Computing).
TightVNC vs Real VNC
Serwer TightVNC tworzy inne wirtualne okno, które jest replikowane na innej maszynie przy użyciu klienta TightVNC. Różni się to od RealVNC, który zwykle zwykle echo domyślnego ekranu.
Gdy większość ludzi myśli o narzędziu zdalnego pulpitu wtedy zwykle myślą o sposobie, że RealVNC działa. W tym przypadku, gdy poruszasz myszką lub uruchamiasz aplikację, wyświetla ona to samo wyjście na fizycznie podłączonym ekranie (zwykle HDMI) i na zdalnym kliencie przez sieć.
TightVNC jest przydatne, jeśli chcesz uruchomić coś innego niż to, co jest na głównym ekranie. Na przykład można go używać tak, że można mieć wyświetlanie stanu na głównym ekranie (przez HDMI) z innym wyświetlaczem używanym do konfiguracji, która jest wyświetlana na laptopie.
Inną zaletą TightVNC jest to, że jest to DARMOWE oprogramowanie open source. Jako takie nie ma żadnych ograniczeń w użyciu i można przeglądać i modyfikować kod źródłowy. Real VNC jest komercyjną wersją VNC i musi być licencjonowany. Real VNC jest wolny do użytku osobistego na Raspberry Pi, ale ma ograniczenia, jeśli chcesz zrobić inne rzeczy z nim, które mogą wymagać licencji komercyjnej. Obejmuje to uruchomienie obrazu Raspbian Desktop na komputerze, ponieważ nie zawiera komercyjnego oprogramowania.
Instalacja skryptu startowego przy użyciu Systemd
Poniżej znajdują się instrukcje, jak to skonfigurować na Raspberry Pi (dystrybucja oparta na Debianie). Powinno być podobnie dla każdej innej dystrybucji opartej na Debianie (np. Ubuntu), która używa plików startowych Systemd. Niektóre inne dystrybucje używają różnych narzędzi do instalacji oprogramowania i ewentualnie różnych narzędzi init setup.
Jeśli jest to używane w połączeniu z przewodnikiem do uruchomienia Raspberry Pi bez głowy z Debian Linux następnie może być używany do skonfigurowania Raspberry Pi do zdalnego dostępu bez konieczności podłączania go do monitora.
Wybierając TightVNC
Istnieje kilka projektów oprogramowania, które obsługują VNC. Wybrałem TightVNC, ponieważ jest to darmowe oprogramowanie open source (GPL2), zapewnia kompresję pozwalającą na pracę w wolnej sieci (Internet) i jest łatwo dostępne w repozytoriach oprogramowania.
Model klient-serwer
VNC podąża za tradycyjnym modelem klient-serwer. Oprogramowanie serwera działa na hoście, który ma być udostępniony, a oprogramowanie klienta działa na komputerze lokalnym, który chce kontrolować hosta. Serwer i klient nie muszą być takie same (np. klient może być RealVNC, gdy serwer jest TightVNC), ale niektóre funkcje mogą działać tylko wtedy, gdy ten sam klient i serwer są używane.
Instalacja oprogramowania serwera TightVNC
Najpierw odśwież informacje o repozytorium oprogramowania za pomocąsudo apt update
Jest to szczególnie ważne, jeśli dopiero co zainstalowałeś system operacyjny, ponieważ informacje o repozytorium mogą być niekompletne.
Zainstaluj oprogramowanie serwera z repozytoriów:sudo apt install tightvncserver
Uruchom serwer i skonfiguruj hasło
Przy pierwszym uruchomieniu serwera zostanie wyświetlony monit o ustawienie hasła. Jest to hasło, którego używasz podczas zdalnego łączenia się.
/usr/bin/tightvncserver
Nie ma potrzeby tworzenia hasła tylko do widoku, chyba że masz konkretną potrzebę.
Po uruchomieniu serwera zostanie wyświetlona informacja, który wirtualny pulpit został skonfigurowany. W tym przypadku:New 'X' desktop is raspberrypi:1
mówi, że jest to wirtualny pulpit 1. Połączysz się z nim, używając :1 na końcu adresu IP w kliencie, jest to ten, który ustawimy, aby uruchamiał się automatycznie później.
Możesz uruchomić wiele instancji. Przy każdym uruchomieniu tightvncserver użyje następnego dostępnego pulpitu, ale w większości przypadków wystarczy jedna instancja.
Dodanie Tightvnc do startu systemd
Aby Tightvnc uruchamiał się automatycznie, musimy stworzyć nowy plik startowy, który musi być przechowywany w katalogu /etc/systemd/system/ i kończyć się końcówką „.service”. Ja nazwałem go tightvncserver.service. Musi to być utworzone jako użytkownik root, więc używając sudosudo nano /etc/systemd/system/tightvncserver.service
-
-
Description=TightVNC remote desktop server
-
After=sshd.service
-
-
-
Type=dbus
-
ExecStart=/usr/bin/tightvncserver :1
-
User=pi
-
Type=forking
-
-
-
WantedBy=multi-user.target
.
Może być konieczna zmiana nazwy użytkownika w linii 8. Obecnie jest ona ustawiona na pi, która jest domyślną nazwą użytkownika na obrazie Raspberry Pi Raspbian. Ustaw to na dowolną nazwę użytkownika, który chcesz zalogować się do TightVNC jako. Nie umieszczaj roota jako użytkownika.
Zmień plik tak, aby był własnością rootasudo chown root:root /etc/systemd/system/tightvncserver.service
Uczyń plik wykonywalnym przez uruchomieniesudo chmod 755 /etc/systemd/system/tightvncserver.service
Dobrym pomysłem jest przetestowanie skryptu w tym momencie, zamiast czekać do czasu po restarcie. Można to zrobić za pomocą:sudo systemctl start tightvncserver.service
Nie przejmuj się, jeśli otrzymasz następujący komunikat o błędzie, ponieważ już uruchomiłeś tightvncA VNC server is already running as :1
Włącz uruchamianie przy starcie za pomocąsudo systemctl enable tightvncserver.service
TightVNC będzie teraz uruchamiany przy starcie. Zalecam restart w tym momencie, aby upewnić się, że to działa, ale można po prostu zatrzymać i uruchomić usługę za pomocą polecenia systemctl zamiast.
Zauważ, że jest to przeznaczone do uruchomienia tylko jednej instancji TightVNC na komputerze. Jeśli chcesz być w stanie uruchomić i zatrzymać konkretne instancje TightVNC to będziesz musiał odpowiednio dostosować skrypt startowy.
Instalacja przeglądarki Tightvnc (klient VNC) na komputerze z Linuxem
Na komputerze z Linuxem możesz zainstalować przeglądarkę za pomocąsudo apt install xtightvncviewer
lub jeśli nie ma tego w repozytoriach spróbuj:sudo apt-get install ssvnc
To będzie działać tylko z dystrybucjami opartymi na Debianie / Ubuntu, dla innych dystrybucji użyj normalnego menedżera pakietów.
Zauważ, że ssvnc – która jest wersją zainstalowaną na moim komputerze Kubuntu jest oparta na tightvnc, ale ma również możliwość konfiguracji tunelowania ssh (zobacz później) poprzez GUI.
Login usingxtightvncviewer 192.168.1.6:1
(replace with your own IP address as appropriate)
Instalacja widoku Tightvnc na komputerze z Windows
Aby uzyskać dostęp z Windows lub używając klienta Java pobierz z TightVNC.com
Zabezpieczanie TightVNC
TightVNC pozwala każdemu, kto zna hasło zalogować się jako użytkownik, pod którym działa. Robi to również bez szyfrowania, więc każdy może podsłuchać sesję. Na szczęście istnieje bezpieczne rozwiązanie, którym jest tunelowanie połączenia przez login ssh (secure shell).
Pierwszym krokiem jest ograniczenie Tightvnc tylko do lokalnego komputera. Robi się to poprzez dodanie opcji -localhost podczas uruchamiania tightvncserver. Aby to zrobić, edytuj linię 7 w pliku /etc/systemd/system/tightvncserver.service, aby otrzymać następujące brzmienie:>
ExecStart=/usr/bin/tightvncserver -localhost :1
Następnie uruchom ponownie serwer.
Aby zalogować się za pomocą ssh – najpierw zaloguj się do komputera głównego za pomocą sshssh [email protected] -L 5901:localhost:5901
Opcja -L tworzy tunel, z bieżącego komputera (domyślnie) port 5901 do komputera głównego (jako localhost) port 5901. Port 5901 jest domyślnym portem dla wyświetlacza 1, 5902 dla wyświetlacza 2 itd.
Aby połączyć się za pomocą tightvnc teraz użyj poleceniaxtightvncviewer 127.0.0.1:1
Uwaga, że poprzedni terminal będzie teraz zalogowany do Raspberry Pi, więc trzeba będzie uruchomić nowy terminal lub kartę, aby uruchomić przeglądarkę.
Jeśli używasz Windows to tunel ssh może być utworzony z wewnątrz PuTTY
Potem połącz się za pomocą klienta vnc używając 127.0.0.1:1.
Możesz teraz używać GUI do uruchamiania aplikacji na Raspberry Pi bez potrzeby monitora lub klawiatury. Jeśli masz ustawione przekierowanie portów na routerze, możesz to zrobić przez Internet.
Uruchamianie menedżera okien
Powyższe instrukcje są wystarczające dla Raspberry Pi z systemem Raspbian (Debian). W innych systemach może być konieczne dokonanie dalszej zmiany konfiguracji, aby uruchomić normalny menedżer okien / launcher aplikacji. Jeśli masz pusty ekran podczas łączenia edytuj plik ~/.vnc/xstartup i zastąp linię /etc/X11/Xsession jedną z następujących odpowiednio.
exec ck-launch-session startlxde#for an lxde sessionexec ck-launch-session gnome-session#for a gnome-sessionexec ck-launch-session openbox-session#for an openbox desktopexec ck-launch-session startxfce4#for an xfce desktopexec ck-launch-session icewm#for an icewm desktopexec ck-launch-session startkde#for a kde desktop
Na przykład z Ubuntu użyjesz wpisu dla gnome, dla xubuntu użyjesz xfce, a dla kubuntu użyjesz kde. Raspberry Pi używa lxde, ale to jest uruchamiane automatycznie na Raspberry Pi nie ma potrzeby, aby dodać go do pliku xstartup.
Dodaj komentarz