Mój terminal spokojnie leży sobie na półce. Podpięty do lokalnej sieci stał się osiągalny z każdego domowego komputera… Ale, co właściwie mogę „na nim” zrobić… skoro nie mam podłączonego monitora?! Ano dzięki temu jak zbudowany jest linux i system X-Window (bez „s”) – właściwie wszystko. Mogę przekierować wyświetlanie aplikacji z terminala – na własnego laptopa.
Zobaczcie jak się to ustawia!
SSH
Zacznijmy skromniej: od połączenia ssh. Takie połączenie umożliwia dostanie się z jednego komputera na drugi – i wykonywanie nie nim poleceń z terminala tekstowego.
Przez następne paragrafy:
- terminal: urządzenie hp thin client, podłaczone do sieci i zasilone, wyposażone w lubuntu (zob. Terminal HP: uruchomienie…)
- komputer: dowolny komputer podłączony do tej samej sieci co terminal, pod kontrolą systemu linux.
Terminal hp
Tutaj wystarczy zainstalować server ssh:
1 |
$ sudo apt-get install openssh-server |
I tyle. SSH będzie uruchamiane automatycznie przy każdym starcie terminala.
Komputer
Po stronie komputera będziecie potrzebowali klienta ssh. Standardowo jest on częścią większości linuxów. Możecie również zainstalować putty – dostępne tak na linux, jak i Windows.
Z linii komend:
1 |
$ ssh arek@192.168.1.14 |
gdzie:
- „ssh” – wywołanie programu klienta ssh,
- „arek” nazwa użytkownika, na którego logujecie się na zdalnej maszynie (terminalu) – taki użytkownik musi już istnieć,
- „192.168.1.14”: adres IP zdalnej maszyny (tutaj: terminala hp)
Zostaniecie zapytani o hasło użytkownika – i już po chwili będziecie mogli wydawać polecenia terminalowi.
VNC
VNC umożliwia znacznie więcej: możecie na swoim komputerze otworzyć okno, w którym pojawi się „ekran” terminala (zdalnego komputera).
Dla przykładu: okno na moim komputerze, do którego przekierowano ekran z terminala – z uruchamiającym się Arduino IDE.
Terminal
Na terminalu najpierw zainstalowałem vncserver.
1 |
$ sudo apt-get install tightvncserver |
teraz uruchomiłem:
1 |
$ vncpasswd |
I wpisałem hasło, które pozwoliło na dostanie się do zdalnego pulpitu.
Zgodnie z przykładem zmieniłem zawartość pliku ~/.vnc/xstartup na:
1 2 3 4 5 |
#!/bin/sh xsetroot -solid grey export XKL_XMODMAP_DISABLE=1 openbox & /usr/bin/lxsession -s Lubuntu & |
Plik powinien być wykonywalny:
1 |
$ chmod +x .vnc/xstartup |
Serwer vnc był już w zasadzie gotowy, możecie go uruchomić poleceniem:
1 |
$ tightvncserver :1 |
Cyferka „:1” oznacza port, na którym serwer będzie dostępny. „:1” to port „5901”, gdyby było „:2” – oznaczałoby port „5902”.
Komputer
Po stronie komputera pozostaje zainstalować klienta i uruchomić go:
1 2 |
$ sudo apt-get install tightvnc $ vncviewer 192.168.1.14:5901 |
Po podaniu hasła (tego samego co dla vncpasswd), powinno otworzyć nowe okno wzięte „żywcem” z terminala.
Na stałe – Wersja #1
Warto dodać tightvncserver do konfiguracji terminala (zdalnej maszyny) tak, żeby automatycznie uruchamiał się przy każdym włączeniu. Rozwiązanie znalazłem w tym wątku: how do I start vnc server at boot. Po kolei:
- W katalogu /etc/init.d stwórzcie skrypt „vncserver” – zwartość poniżej,
- Upewnijcie się, że można go wykonać:
1$ sudo chmod +x /etc/init.d/vncserver - Uzupełnijcie reguły startowe:
1$ sudo update-rc.d vncserver defaults
Zawartość skryptu „vncserver” – odrobinę zmieniona przeze mnie:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
#!/bin/sh -e ### BEGIN INIT INFO # Provides: vncserver # Required-Start: networking # Default-Start: 3 4 5 # Default-Stop: 0 6 ### END INIT INFO #PATH="$PATH:/usr/X11R6/bin/" # The Username:Group that will run VNC export USER="arek" #${RUNAS} # The display that VNC will use DISPLAY="1" # Color depth (between 8 and 32) DEPTH="16" # The Desktop geometry to use. #GEOMETRY="<WIDTH>x<HEIGHT>" #GEOMETRY="800x600" GEOMETRY="1024x768" #GEOMETRY="1280x1024" # The name that the VNC Desktop will have. NAME="my-tm-server" OPTIONS="-name ${NAME} -depth ${DEPTH} -geometry ${GEOMETRY} :${DISPLAY}" . /lib/lsb/init-functions case "$1" in start) log_action_begin_msg "Starting vncserver for user '${USER}' on localhost:${DISPLAY}" su ${USER} -c "/usr/bin/tightvncserver ${OPTIONS}" ;; stop) log_action_begin_msg "Stoping vncserver for user '${USER}' on localhost:${DISPLAY}" su ${USER} -c "/usr/bin/tightvncserver -kill :${DISPLAY}" ;; restart) $0 stop $0 start ;; esac exit 0 |
Na Wasz potrzeby:
- ustawcie nazwę użytkownika „USER”,
- ustawcie „GEOMETRY” – jaką rozdzielczość chcecie uzyskać,
- DISPLAY – jeżeli „1” – łączycie się na port 5901.
Na stałe – Wersja #2 (lubuntu 18.04)
potrzebujecie dwóch rzeczy do automatycznego udostępnienia serwera VNC przy starcie terminala:
- sesji użytkownika,
- servera vnc uruchamiającego się automatycznie przy zalogowaniu użytkownika.
Sesję można uzyskać poprzez automatyczne zalogowanie użytkownika przy starcie. Najłatwiej stworzyć (o ile jeszcze nie istnieje) plik: /etc/lightdm/lightdm.conf, w którym:
1 2 3 4 5 |
[SeatDefaults] autologin-user=horacy user-session=Lubuntu autologin-user-timeout=0 autologin-guest=false |
’horacy’ zastąpcie nazwą użytkownika, którego konto ma być użyte do automatycznego logowania.
Krok drugi to automatyczne uruchomienie serwera VNC. W tym celu wystarczy poprawić plik: /.config/lxsession/Lubuntu/autostart dodając do niego linię:
1 |
@/usr/bin/tightvncserver :1 |
Mały dodatek…
Klienta vnc wywoływałem:
1 |
$ vncviewer 192.168.1.14:5901 |
Wtedy terminal pytał o hasło. Można inaczej, po stronie komputera:
1 2 3 4 5 6 7 8 |
$ sudo apt-get install tightvncserver $ vncpasswd Using password file /home/arek/.vnc/passwd VNC directory /home/arek/.vnc does not exist, creating. Password: Verify: Would you like to enter a view-only password (y/n)? n |
Podajcie to samo hasło, co dla serwera. Programik wygeneruje plik „/home/arek/.vnc/passwd”, który będzie zawierał Wasze hasło. Wtedy klienta VNC możecie uruchomić:
1 |
$ vncviewer 192.168.1.14:5901 -p /home/arek/.vnc/passwd |
…albo stworzyć elegancki skrót na pulpicie.
Uwagi
Przy łączeniu się przez serwer vnc, możecie mieć problem np. programem gparted. Próba wywołania go skończy się błędem:
1 2 3 4 5 |
$ su # gparted ... (gpartedbin:2926): Gtk-WARNING **: cannot open display: :1:0 ... |
Przed użyciem su, wywołajcie:
1 |
$ xhost +localhost |
… wtedy gparted powinien już uruchomić się bez problemu.
Pytanie, po co ? Skoro masz komputer swój, po co z niego się łączyć do terminala i na nim pracować? Co ci to da?
Witaj,
w domu mam już całą sieć takich terminali. Dzięki ssh i vnc mogę je sobie zdalnie konfigurować – bez konieczności przełączania monitora.
Pozdrawiam,
A