Difference between revisions of "Vzdálený přístup do laboratoří"

From DCEwiki
Jump to: navigation, search
m (spice klient)
m (Xpra)
 
(29 intermediate revisions by 2 users not shown)
Line 1: Line 1:
Pro zajištění vzdáleného přístupu na laboratorní stroje existují tyto stroje:
+
__TOC__
  
; [[turtle|turtle.felk.cvut.cz]] : Pro přístup na laboratorní stroje Katedry kybernetiky (DC)
+
{{Vsuvka|Aby byla možná práce na laboratorních počítačích s disklessovým linuxem používaných v laboratořích Katedry kybernetiky (DC) a Katedry řídicí techniky (DCE) budově E na Karlově náměstí, byly pro tento účel upraveny dva virtuální stroje, které se původně používaly pouze k testování disklessové instalace.
; [[postel|postel.felk.cvut.cz]] : Pro přístup na laboratorní stroje Katedry řídicí techniky (DCE)
 
  
Tyto stroje používají speciální vrstvu, ve které je vytvořen ssh jail se skriptem, který po ověření generického uživatele '''student''' vybere na základě volby uživatele ze zvolené laboratoře fyzický laboratorní stroj, na kterého přihlásí uživatele přes '''ssh'''.
+
Jejich prostřednictvím lze nyní na dálku laboratorní stroje spouštět. A zároveň je využívat jako ssh proxy pro vzdálený přístup.}}
  
== Použití strojů s disklessovým linuxem ==
+
Pro nahození (a přidělení) laboratorní pracovní stanice je třeba se přihlásit jako generický uživatel '''student''', který používá stejné heslo jako dočasný uživatel '''guest'''<ref>Generický uživatel '''guest''' je povolen pouze v rámci lokální sítě. Z vnějšku se na něj nedá přihlásit přes SSH.</ref> – <code>xxx</code>
Pokud uživateli stačí práce na konzoli, může si spustit '''tmux''' a pak již na stroj přistupovat přes stroj [[postel]] (nebo [[turtle]]) rovnou přes svůj login. Důležité je, aby si poznamenal ''hostname'' přiděleného stroje.
 
  
Během přihlášení přes uživatele '''student''' se stroje přidělují na základě seznamu strojů tak, aby se pokud možno rovnoměrně využívaly všechny stroje v laboratoři. Po odhlášení, nebo ukončení sezení se stroj opět vrátí na seznam. Cílem je předejít situaci, že se všichni uživatelé budou hlásit pouze na jeden či dva stroje, zatím co ostatní stroje zůstanou nevytížené.
+
~$ ssh student@turtle.felk.cvut.cz
 +
student@turtle.felk.cvut.cz's password:
 +
Write your CVUT login please:
 +
  
{{Poznámka|Pokud je některý laboratorní stroj zrovna vypnutý, či nedostupný, je z tohoto seznamu vyřazen. Stačí se na uživatele '''student''' přihlásit znovu a bude ze seznamu přidělen stroj jiný.}}
+
{{Poznámka|Po ověření generického uživatele '''student''' se automaticky spouští skript, který se ptá na uživatelské jméno pro ČVUT. A dál pokračuje jen pokud se mu pro uvedené uživatelské jméno podaří získat ID.}}
 +
{{Pozor|Na strojích [[postel]] a [[turtle]] běží poměrně striktně nastavený démon '''fail2ban'''. Pokud vyhodnotí vaši aktivitu jako pokus o útok, bude pro vaši IP adresu na 24 hodin zablokována veškerá síťová komunikace. Proto bylo, zcela záměrně, zvoleno pro generického uživatele tak jednoduché heslo.}}
  
=== Aplikace s GUI ===
+
Po ověření vašeho uživatelského jména se vás skript zeptá, ve které laboratoři chcete pracovat. Tato nabídka je pro každou katedru jiná.
Pokud uživatel přidá parametr "-X" (resp. "-Y"), může skrz ssh připojení protáhnout také okna aplikací, co používají GUI.
 
  
Protáhnout lze i celý desktop. A je k tomu několik cest.
+
; [[turtle|turtle.felk.cvut.cz]] : Obsluhuje tři počítačové laboratoře Katedry kybernetiky (DC):
 +
: '''Lab E:130''' – je laboratoř na prvním podlaží, kde se pracuje s [[TurtleBot]]y (7 strojů)
 +
: '''Lab E:132''' – druhá laboratoř na prvním podlaží (30 strojů)
 +
: '''Lab E:230''' – je laboratoř na druhém podlaží, kde se spouštějí virtuální stroje přes VMware (30 strojů)
 +
; [[postel|postel.felk.cvut.cz]] : Obsluhuje počítačové laboratoře Katedry řídicí techniky (DCE). V současné době jde pouze o jednu laboratoř:
 +
: '''Lab E:23''' – laboratoř v přízemí naproti výtahu (20 strojů)
  
{{Poznámka|Aby mohli tímto způsobem přistupovat k aplikacím uživatelé MS Windows, musí mít nainstalovaný X server. Proto doporučuji využít raději Xspice, pro který existují klientské aplikace jak pro MS Windows, tak pro Mac OS X, Linux i Android.}}
+
Poté co zvolíte laboratoř, se z jejího seznamu strojů vybere ten co je na řadě. Pokud zrovna poběží, tak se vám rovnou objeví přihlašovací dialog, přes který se na něj můžete přihlásit. Pokud stroj neběží, jste dotázáni na jeho spuštění a je potřeba odeslat odpověď 'y' (yes) a skript pokračuje dále až po minutě poskytnuté stroji na jeho start.
  
==== XPRA ====
+
Pokud na něm hodláte pracovat delší dobu, nebo si na něm budete chtít spustit vzdálenou plochu, nemusíte ihned pokračovat v připojení. '''Poznamenejte si jeho hostname''', a spojení můžete ukončit. Dokud stroj poběží, tak se na něj můžete přihlašovat přes svůj ČVUT username.
'''Nejjednodušší''' je použít aplikaci ''Xpra''.
 
  
==== Spice ====
+
Stejně tak se můžete přes své uživatelské jméno ČVUT rovnou přihlásit na stroj [[turtle]], nebo [[postel]], na kterých běží v podstatě stejný systém jako na laboratorních strojích. Ovšem mají určitá omezení. A protože jde především o servisní virtuální stroje, mohou občas projít '''bez varování''' restartem.
'''Nejefektivnější''' je použít ''Xspice''
 
  
Výhodou je, že spuštěná plocha X serveru běží na pozadí, takže na ní lze mít rozdělanou práci a připojit se podle potřeby.
+
{{Poznámka|Při opakovaném přihlášení na generického uživatele '''student''' se vám nabídne ke spuštění automaticky další stroj v pořadí. Což můžete chtít, ale taky nemusíte. Cílem je, zajistit rovnoměrné využití laboratorních strojů a předejít situaci, kdy by se uživatelé koncentrovali pouze na jednom či dvou strojích, zatím co ostatní stroje zůstanou nevyužité.}}
  
Xspice používá virtuální akcelerovanou grafiku, takže podporuje do určité míry i 3D akceleraci a umožňuje měnit za běhu parametry připojení.
+
== Přihlašovací heslo ==
  
===== X spice server =====
+
{{Definice|
Spuštění Xspice serveru je jednoduché. Ideální je využít '''screen''' nebo '''tmux''', aby server mohl běžet na pozadí.
+
K přihlašování na laboratorní stroje DCE ('''Katedra řídicí techniky''') – přes stroj [[postel|postel.felk.cvut.cz]] – se '''používá hlavní heslo ČVUT'''.}}
 +
 
 +
 
 +
{{Definice|Pro přihlášení na labratorní stroje DC ('''Katedra kybernetiky''') – přes stroj [[turtle|turtle.felk.cvut.cz]] – se '''používá vlastní laboratorní heslo''', které si musíte nejprve nastavit přes stránku, na kterou se dostane z portálu https://felk.cvut.cz (klikněte na laboratoře DC)}}
 +
 
 +
== Práce v prostředí terminálu ==
 +
Pokud vám pro vaši práci na vzdáleném stroji stačí terminálová konzole, můžete vyžít buď '''screen''' nebo '''tmux''' – aplikace, které umožňují ponechat otevřenou konzoli v běhu na pozadí.
 +
 
 +
; screen : Je poměrně hojně rozšířený. Spustí se přes
 +
:<code>~$ screen</code>
 +
:Odpojení konzole se udělá kombinací klávesové zkratky <code>Ctrl+a</code>, následované stiskem klávesy <code>d</code>
 +
: Opětovně se na běžící '''screen''' připojíte, když použijete parametr <code>-r</code>
 +
:<code>~$ screen -r</code>
 +
; tmux : Nabízí více možností než '''screen'''. Umí například zachovat rozdělení terminálových oken.
 +
:<code>~$ tmux</code>
 +
:Odpojení konzole se udělá kombinací klávesové zkratky <code>Ctrl+b</code>, následované stiskem klávesy <code>d</code>
 +
: Pro připojení na '''tmux''' běžící na pozadí používá klíčové slovo <code>attach</code>
 +
:<code>~$ tmux attach</code>
 +
 
 +
Jaké mají tyto aplikace další možnosti se můžete dozvědět z manuálových stránek či nápovědy.
 +
 
 +
== Aplikace s GUI ==
 +
Pokud přistupujete na laboratorní stroje z linuxového desktopu co používá X server, můžete ssh předat parametr "-X" (resp. "-Y"), a skrze připojení protáhnout okna aplikací, které používají GUI.
 +
 
 +
Také uživatelé MS Windows by si mohli tímto způsobem protunelovat aplikace s GUI, ovšem to by si museli X server doinstalovat.
 +
 
 +
Nicméně tohle řešení má jeden '''základní nedostatek – závislost na kvalitě připojení'''. Pokud během práce dojde k přerušení spojení aplikace spadne. Proto je mnohem lepší používat řešení na bázi klient – server.
 +
 
 +
V takovém případě, pokud se připojení nepodaří obnovit zůstane aplikace běžet na straně serveru a klient se k ní může připojit později. Více o tom v následující části.
 +
 
 +
== Laboratorní desktop ==
 +
Je několik cest, jak se na dálku dostat k pracovní ploše laboratorního počítače. Všechny jsou založeny na tom, že se spuštěný X server zpřístupní pomocí serverové aplikace, která čeká na připojení klienta.
 +
 
 +
Uživatelé laboratorních desktopů DC a DCE mají k dispozici dvě možnosti:
 +
 
 +
; Xspice : Xspice server přenáší data mezi serverem a klientem přes spice protokol, který integruje několik kanálů a vše tlačí jedním TCP portem (ve výchozím stavu 5900).
 +
; Xpra : Xpra, je-li spuštěná v režimu server (''start-desktop'') na žádném, předem vyhrazeném, síťovém portu čekat nemusí. Pokud se klient k serveru přihlásí přes SSH, tak si server otevře další porty podle potřeby.
 +
 
 +
* Obě aplikace podporují virtuální akcelerovanou grafiku, takže lze v rámci vzdálené plochy spoutštět i aplikace co vyžadují 3D akceleraci.
 +
* V obou případech jsou k dispozici klientské aplikace a to nejenom pro Linux, ale i MS Windows, Mac OS i Android.
 +
* U obou lze operativně prostřednictvím klientské aplikace za běhu měnit parametry připojení podle toho, jaká je vaše konektivita.
 +
* Obě umožňují mít spuštěnou plochu X serveru na pozadí, takže na ní můžete mít rozdělanou práci a připojovat se podle potřeby.
 +
 
 +
Pro oba servery lze použít řadu parametrů. Ale důležité je především číslo spuštěného X serveru, který bude čekat na vaše připojení. V rámci spuštěné plochy ho najdete v rámci proměnné <code>DISPLAY</code>, mezi proměnnými, které vypíše příkaz '''env'''
 +
 
 +
Pro Xspice server je důležité také <code>číslo TCP portu</code> na které musí vést ssh tunel. Xpra ho při spouštění nepotřebuje, protože počítá s tím, že klient může přistupovat přes SSH proxy, pro kterou má podporu.
 +
 
 +
=== remote-desktop ===
 +
 
 +
Je jednoduchý wrapper, který má uživatelům maximálně zjednodušit nahození vzdálené plochy a zamezit tomu, aby docházelo ke konfliktu v případě, že je na jednom stroji spuštěno více instancí X serveru.
 +
 
 +
Přes tento wrapper si můžete X server pro vzdálenou plochu nejenom nahazovat, ale i shodit.
 +
 
 +
=== Xspice ===
 +
{{Pozor|Pro spouštění plochy na vzdáleném stroji využívejte výhradně '''remote-desktop'''}}
 +
{{Příklad|
 +
~$ remote-desktop start xspice
 +
}}
 +
 
 +
Xspice lze pustit pochopitelně i manuálně, ovšem pokud nepoužijete '''nohup''' zůstane běžet na popředí. Abyste ho mohli nechat běžet na pozadí, musíte použít '''screen''' nebo '''tmux'''.
 +
 
 +
{{Příklad|Následující '''ukázkový příklad''' demonstruje, jak lze jedním příkazem spustit '''Xspice''', tak aby běžel rovnou v okně odpojeného '''screen'''u:
  
 
  username@k23-177:~$ screen -d -m /usr/bin/Xspice --password heslo --xsession /usr/bin/xfce4-session :1
 
  username@k23-177:~$ screen -d -m /usr/bin/Xspice --password heslo --xsession /usr/bin/xfce4-session :1
 +
}}
 +
 +
Nicméně se vyvarujte manuálního spouštění, protože byste se mohli dostat do konfliktu z již používaným TCP portem, či jinou instancí X serveru.
 +
 +
Pokud zapomenete s jakými parametry byl váš Xspice server spuštěný, využijte akci ''list'' utility '''remote-desktop''', s parametrem ''full''. Viz příklad:
 +
 +
{{Příklad|
 +
~$ remote-desktop list full
 +
:1  21099: /usr/bin/python2 /usr/bin/Xspice --password heslo --video-codecs h264 --image-compression auto_lz --port 5900 :1
 +
}}
 +
 +
Jak vidíte, vypíše se vám nejenom číslo spuštěného X serveru, ale také port, na kterém váš Xspice server naslouchá a heslo, které bude očekávat od klienta.
  
===== ssh tunel =====
+
==== ssh tunel ====
 +
Abyste se na spuštěný Xspice server dostali zvenčí, musíte na svém lokálním stroji nahodit ssh tunel, kterým se přes stroj [[turtle]], nebo [[postel]] dostanete na port laboratorního stroje, na kterém čeká na vaše připojení. '''SSH tunel nemusíte mít spuštěný pořád'''. Můžete si ho nahodit podle potřeby, jen když budete chtít se svou vzdálenou plochou pracovat. Tunelů můžete mít spuštěných i více, na různé porty. Například si můžete tímto způsobem tunelovat ssh připojení a rovnou se přihlašovat na konzoli vzdáleného stroje.
  
Abyste se dostali na spuštěný Xspice server, musíte mít nahozený na stroji [[postel]] ssh tunel.
+
{{Příklad|Toto je ukázkový příklad ssh tunelu, kterým bych přistupoval na Xspice server spuštěný výše uvedeným příkazem na stroji <code>k23-177</code>:
  
 
  notebook:~$ ssh -fN -L 5900:k23-177:5900 username@postel.felk.cvut.cz
 
  notebook:~$ ssh -fN -L 5900:k23-177:5900 username@postel.felk.cvut.cz
 +
}}
  
Tunel nemusí běžet pořád. Můžete si ho nahodit jen když budete chtít se svou vzdálenou plochou pracovat.
+
==== Klientské aplikace pro spice protokol ====
  
===== spice klient =====
+
:; Linux : Můžete použít buď '''spicec''' (klient spouštěný z příkazové řádky), nebo '''spicy''' (GTK klient s GUI). K protunelování spojení lze použít ssh na konzoli. Viz použití '''spicec''' a '''spicy''' z příkazového řádku:
 
 
; Linux : Můžete použít buď '''spicec''' (klient spouštěný z příkazové řádky), nebo '''spicy''' (GTK klient s GUI). K protunelování spojení lze použít ssh na konzoli. Viz použití '''spicec''' a '''spicy''' z příkazového řádku:
 
  
 
  ~$ spicec -h localhost -p 5900 -w heslo
 
  ~$ spicec -h localhost -p 5900 -w heslo
Line 51: Line 128:
 
  ~$ spicy -h localhost -p 5900 -w heslo
 
  ~$ spicy -h localhost -p 5900 -w heslo
  
; MS Windows : V prostředí MS Windows lze použít [https://virt-manager.org/download/ virt-viewer] a k protunelování [https://www.putty.org/ putty]
+
:; MS Windows : V prostředí MS Windows lze použít [https://virt-manager.org/download/ virt-viewer] a k protunelování [https://www.putty.org/ putty]
; Mac OS X : V prostředí Mac OS X by měl být použitelný [https://rizvir.com/articles/ovirt-mac-console/ Remote Viewer] (hledej v adresáři dmg) viz také info [https://people.freedesktop.org/~teuf/spice-gtk-osx/ zde]
+
:; Mac OS X : V prostředí Mac OS X by měl být použitelný [https://rizvir.com/articles/ovirt-mac-console/ Remote Viewer] (hledej v adresáři dmg) viz také info [https://people.freedesktop.org/~teuf/spice-gtk-osx/ zde]
; Android : Pro Android existuje na google play [https://play.google.com/store/apps/details?id=com.iiordanov.freeaSPICE&hl=en_US aSPICE], ovšem nemám zkušenost s nastavením tunelování portu.
+
:; Android : Pro Android existuje na google play [https://play.google.com/store/apps/details?id=com.iiordanov.freeaSPICE&hl=en_US aSPICE], ovšem nemám zkušenost s nastavením tunelování portu.
 +
 
 +
=== Xpra ===
 +
{{Pozor|Pro spouštění plochy na vzdáleném stroji využívejte výhradně '''remote-desktop'''}}
 +
{{Příklad|
 +
~$ remote-desktop start xpra
 +
}}
 +
 
 +
Také '''Xpra''' může být spuštěna manuálně, ale je to zbytečné. Opět, pokud vás zajímá s jakými parametry byla '''Xpra''' spuštěna – například, jestli běží s podporou audia, využijte akci ''list'' utility '''remote-desktop''', s parametrem ''full''. Při spuštění nebo po zjištění výpisem seznamu běžících instancí přes '''remote-desktop''' si poznamenejte pořadové číslo svého grafického sezení na dané stanici (diplay ID). Toto číslo je potřeba vyplnit do dialogu při navazování spojení z Xpra klienta.
 +
 
 +
Na vlastní počítač je potřeba nainstalovat Xpra klienta, který je k dispozici pro všechny běžné desktopové systémy
 +
 
 +
; MS Windows : https://xpra.org/trac/wiki/Download nebo https://winswitch.org/downloads
 +
; Mac OS X : https://xpra.org/trac/wiki/Download nebo https://winswitch.org/downloads
 +
; Android : https://android-apk.org/cc.snapp.app_xpra nebo https://winswitch.org/downloads
 +
 
 +
Na svém počítači pak spusťte Xpra klienta a zvolte akci connect. Vyberte možnost SSH->SSH a vyplňte přihlašovací údaje, lokální hostname stanice a číslo grafického sezení (diplay ID).
 +
 
 +
[[File:xpra-to-k23-2-connect.png|none|350px|Xpra connect dialog]]
 +
 
 +
Při prvním připojení k dané stanici může být potřeba přijmout cílovou stanici do seznamu známých/ověřených SSH počítačů v terminálovém okně, ze kterého je Xpra klient spuštěný. V grafickém výstupu se může takový stav jevit jako zablokování bez jakékoliv aktivity. Zkontrolujete výstup v okně,
 +
 
 +
=== Ukončení vzdálené plochy ===
 +
Pro "vypnutí" vzdálené plochy použijte opět utilitu '''remote-desktop'''. Nejprve si přes akci list zjistěte aktuální číslo desktopu, který chcete vypnout<ref>
 +
Na jednom stroji mohou běžet vzdálené plochy pro víc uživatelů. Ba dokonce i jeden uživatel může mít spuštěno několik vzdálených ploch.
 +
</ref>, a pak použijte akci ''stop''
 +
 
 +
{{Příklad|
 +
~$ remote-desktop list
 +
:1 xpra
 +
:2 xpra
 +
:3 xspice
 +
~$ remote-desktop stop 2
 +
}}
 +
 
 +
== Informace pro administrátory ==
 +
 
 +
Jelikož občas stroje vyžadují servisní zásah, a vzdálená plocha umožňuje non-stop práci v laboratoři, je nutné vědět, jakým způsobem lze zjistit, zda-li na stroji někdo pracuje, či ne.
 +
 
 +
Z bezpečnostních důvodů si uživatelé spuštěné procesy navzájem nevidí. Tzn. že '''následující operace může provádět pouze uživatel přepnutý''' na lokálního uživatele '''root'''
 +
 
 +
=== Běží na stroji nějaká vzdálená plocha? ===
 +
To se dá zjistit snadno a rychle přes akci ''list'' utility '''remote-desktop'''.
 +
{{Příklad|
 +
root@k23-185:~# remote-desktop list
 +
:1 xpra
 +
:2 xpra
 +
:3 xpra
 +
:4 xpra
 +
:5 xpra
 +
}}
 +
 
 +
Nejde o uživatele, co po ukončení práce zapomněli svoji vzdálenou plochu ukončit? To zjistíte záhy.
 +
 
 +
=== Monitoring uživatelské aktivity na textové konzoli ===
 +
Pro tyto účely je v disklessovém systému nainstalován balík utilit '''acct''', který průběžné zaznamenává co a kdy uživatel spustil.
 +
 
 +
I když si uživatelé svoje procesy vzájemně nevidí, některé operace, použít mohou. Kupř. si mohou přes utilitu '''last''' vypsat kdo a kdy byl (či je) zároveň s nimi na stroji přihlášen:
 +
 
 +
{{Příklad |
 +
~$ last
 +
kapical1 pts/0        192.168.136.200  Thu Apr 30 09:50  still logged in
 +
basarpet pts/1        192.168.136.200  Mon Apr 27 17:41 - 20:20  (02:38)
 +
pisa    pts/0        192.168.136.200  Mon Apr 27 12:10 - 01:28  (13:17)
 +
reboot  system boot  5.4.0-3-amd64    Mon Apr 27 12:10  still running
 +
 +
}}
 +
 
 +
Také si mohou vypsat kolik celkem času strávil na laboratorním stroji od posledního startu:
 +
 
 +
{{Příklad |
 +
root@k23-189:~# ac -p
 +
        basarpet                            2.65
 +
        pisa                                13.30
 +
        kapical1                            4.96
 +
        root                                15.54
 +
        total      36.44
 +
}}
 +
 
 +
Denní statistiku konkrétního uživatele lze vypsat takto:
 +
{{Příklad |
 +
root@k23-189:~# ac -d pisa
 +
Apr 27  total      11.82
 +
Apr 28  total        1.48
 +
}}
 +
 
 +
Ovšem pro administrátora, který potřebuje stroj restartovat, je mnohem důležitější jakou operaci a kdy některý z uživatelů pustil naposled, aby viděl, jestli náhodou někdo z nich stroji nepracuje. K tomu slouží utilita '''lastcomm''', které běžný uživatel použít nemůže, protože nemá přístup k logu <code>/var/log/account/pacct</code>, do kterého se aktivita všech uživatelů zaznamenává.
 +
 
 +
{{Příklad |
 +
root@k23-189:~# date
 +
Thu 30 Apr 2020 03:33:42 PM CEST
 +
root@k23-189:~# lastcomm --user pisa &#124; head -1
 +
bash            S  X pisa    __        0.00 secs Mon Apr 27 12:10
 +
root@k23-189:~# lastcomm --user basarpet &#124; head -1
 +
bash            S  X basarpet __        0.01 secs Mon Apr 27 17:41
 +
 
 +
Jak je vidět na tomto konkrétním případě, poslední operací, kterou uživatel <code>pisa</code> na stroji k23-189 udělal, bylo ukončení (X) shellu, od kterého uplynulo víc jak 39 hodin, a uživatel <code>basarpet</code> svůj shell ukončil před 34 hodinami, takže bude možné stroj k23-189 příkazem '''shutdown''' korektně vypnout.
 +
}}
 +
 
 +
{{Poznámka|Aktivitu uživatele <code>pisa</code> z 28. dubna způsobil zřejmě některý z démonů běžících na odpojené vzdálené ploše.}}
 +
 
 +
https://www.tecmint.com/how-to-monitor-user-activity-with-psacct-or-acct-tools/
 +
 
 +
=== Monitoring uživatelské aktivity v prostředí X serveru ===
 +
 
 +
Jak zjistit čas od poslední akce na vzdálené ploše
 +
 
 +
Balík suckless-tools
 +
 
 +
while true ; do sleep 1; DISPLAY=:1 xssstate -i ; done
 +
 
 +
Jak identifikovat okna spuštených aplikací
 +
 
 +
wmctrl -lp
  
== Použití strojů s MS Windows ==
+
== Přístup na stroje s MS Windows ==
Laboratorní stroje s MS Windows jsou pouze v rámci infrastruktury Katedry řídicí techniky.
+
Laboratorní stroje s MS Windows se vyskytují pouze v rámci infrastruktury Katedry řídicí techniky.
  
Prozatím na ně není vzdálený přístup není. Přesněji řečeno byl by, ale pouze přes SSH.
+
Prozatím na ně není vzdálený přístup není. Přesněji řečeno byl by, ale pouze přes SSH. Prozatím nebylo rozhodnuto, jakým způsobem s nimi bude možné pracovat. Jednou z možností je zpřístupnit jejich plochu přes RDP, tunelované podobným způsobem, jako když chcete přistupovat na disklessový laboratorní desktop.
  
Nicméně do budoucna '''lze''' zpřístupnit jejich plochu přes RDP, tunelované podobným způsobem, jako když chcete přistupovat na plochu Xspice.
+
Ovšem, s největší pravděpodobností se využije pro práci s aplikacemi pro MS Windows Citrix.
  
 +
----
  
 
[[Kategorie:Manuály]]
 
[[Kategorie:Manuály]]

Latest revision as of 18:32, 3 May 2020

Aby byla možná práce na laboratorních počítačích s disklessovým linuxem používaných v laboratořích Katedry kybernetiky (DC) a Katedry řídicí techniky (DCE) budově E na Karlově náměstí, byly pro tento účel upraveny dva virtuální stroje, které se původně používaly pouze k testování disklessové instalace. Jejich prostřednictvím lze nyní na dálku laboratorní stroje spouštět. A zároveň je využívat jako ssh proxy pro vzdálený přístup.


Pro nahození (a přidělení) laboratorní pracovní stanice je třeba se přihlásit jako generický uživatel student, který používá stejné heslo jako dočasný uživatel guest[1]xxx

~$ ssh student@turtle.felk.cvut.cz
student@turtle.felk.cvut.cz's password: 
Write your CVUT login please:

Poznámka Po ověření generického uživatele student se automaticky spouští skript, který se ptá na uživatelské jméno pro ČVUT. A dál pokračuje jen pokud se mu pro uvedené uživatelské jméno podaří získat ID.
Upozornění Na strojích postel a turtle běží poměrně striktně nastavený démon fail2ban. Pokud vyhodnotí vaši aktivitu jako pokus o útok, bude pro vaši IP adresu na 24 hodin zablokována veškerá síťová komunikace. Proto bylo, zcela záměrně, zvoleno pro generického uživatele tak jednoduché heslo.

Po ověření vašeho uživatelského jména se vás skript zeptá, ve které laboratoři chcete pracovat. Tato nabídka je pro každou katedru jiná.

turtle.felk.cvut.cz 
Obsluhuje tři počítačové laboratoře Katedry kybernetiky (DC):
Lab E:130 – je laboratoř na prvním podlaží, kde se pracuje s TurtleBoty (7 strojů)
Lab E:132 – druhá laboratoř na prvním podlaží (30 strojů)
Lab E:230 – je laboratoř na druhém podlaží, kde se spouštějí virtuální stroje přes VMware (30 strojů)
postel.felk.cvut.cz 
Obsluhuje počítačové laboratoře Katedry řídicí techniky (DCE). V současné době jde pouze o jednu laboratoř:
Lab E:23 – laboratoř v přízemí naproti výtahu (20 strojů)

Poté co zvolíte laboratoř, se z jejího seznamu strojů vybere ten co je na řadě. Pokud zrovna poběží, tak se vám rovnou objeví přihlašovací dialog, přes který se na něj můžete přihlásit. Pokud stroj neběží, jste dotázáni na jeho spuštění a je potřeba odeslat odpověď 'y' (yes) a skript pokračuje dále až po minutě poskytnuté stroji na jeho start.

Pokud na něm hodláte pracovat delší dobu, nebo si na něm budete chtít spustit vzdálenou plochu, nemusíte ihned pokračovat v připojení. Poznamenejte si jeho hostname, a spojení můžete ukončit. Dokud stroj poběží, tak se na něj můžete přihlašovat přes svůj ČVUT username.

Stejně tak se můžete přes své uživatelské jméno ČVUT rovnou přihlásit na stroj turtle, nebo postel, na kterých běží v podstatě stejný systém jako na laboratorních strojích. Ovšem mají určitá omezení. A protože jde především o servisní virtuální stroje, mohou občas projít bez varování restartem.

Poznámka Při opakovaném přihlášení na generického uživatele student se vám nabídne ke spuštění automaticky další stroj v pořadí. Což můžete chtít, ale taky nemusíte. Cílem je, zajistit rovnoměrné využití laboratorních strojů a předejít situaci, kdy by se uživatelé koncentrovali pouze na jednom či dvou strojích, zatím co ostatní stroje zůstanou nevyužité.

Přihlašovací heslo[edit]

K přihlašování na laboratorní stroje DCE (Katedra řídicí techniky) – přes stroj postel.felk.cvut.cz – se používá hlavní heslo ČVUT.


Pro přihlášení na labratorní stroje DC (Katedra kybernetiky) – přes stroj turtle.felk.cvut.cz – se používá vlastní laboratorní heslo, které si musíte nejprve nastavit přes stránku, na kterou se dostane z portálu https://felk.cvut.cz (klikněte na laboratoře DC)


Práce v prostředí terminálu[edit]

Pokud vám pro vaši práci na vzdáleném stroji stačí terminálová konzole, můžete vyžít buď screen nebo tmux – aplikace, které umožňují ponechat otevřenou konzoli v běhu na pozadí.

screen 
Je poměrně hojně rozšířený. Spustí se přes
~$ screen
Odpojení konzole se udělá kombinací klávesové zkratky Ctrl+a, následované stiskem klávesy d
Opětovně se na běžící screen připojíte, když použijete parametr -r
~$ screen -r
tmux 
Nabízí více možností než screen. Umí například zachovat rozdělení terminálových oken.
~$ tmux
Odpojení konzole se udělá kombinací klávesové zkratky Ctrl+b, následované stiskem klávesy d
Pro připojení na tmux běžící na pozadí používá klíčové slovo attach
~$ tmux attach

Jaké mají tyto aplikace další možnosti se můžete dozvědět z manuálových stránek či nápovědy.

Aplikace s GUI[edit]

Pokud přistupujete na laboratorní stroje z linuxového desktopu co používá X server, můžete ssh předat parametr "-X" (resp. "-Y"), a skrze připojení protáhnout okna aplikací, které používají GUI.

Také uživatelé MS Windows by si mohli tímto způsobem protunelovat aplikace s GUI, ovšem to by si museli X server doinstalovat.

Nicméně tohle řešení má jeden základní nedostatek – závislost na kvalitě připojení. Pokud během práce dojde k přerušení spojení aplikace spadne. Proto je mnohem lepší používat řešení na bázi klient – server.

V takovém případě, pokud se připojení nepodaří obnovit zůstane aplikace běžet na straně serveru a klient se k ní může připojit později. Více o tom v následující části.

Laboratorní desktop[edit]

Je několik cest, jak se na dálku dostat k pracovní ploše laboratorního počítače. Všechny jsou založeny na tom, že se spuštěný X server zpřístupní pomocí serverové aplikace, která čeká na připojení klienta.

Uživatelé laboratorních desktopů DC a DCE mají k dispozici dvě možnosti:

Xspice 
Xspice server přenáší data mezi serverem a klientem přes spice protokol, který integruje několik kanálů a vše tlačí jedním TCP portem (ve výchozím stavu 5900).
Xpra 
Xpra, je-li spuštěná v režimu server (start-desktop) na žádném, předem vyhrazeném, síťovém portu čekat nemusí. Pokud se klient k serveru přihlásí přes SSH, tak si server otevře další porty podle potřeby.
  • Obě aplikace podporují virtuální akcelerovanou grafiku, takže lze v rámci vzdálené plochy spoutštět i aplikace co vyžadují 3D akceleraci.
  • V obou případech jsou k dispozici klientské aplikace a to nejenom pro Linux, ale i MS Windows, Mac OS i Android.
  • U obou lze operativně prostřednictvím klientské aplikace za běhu měnit parametry připojení podle toho, jaká je vaše konektivita.
  • Obě umožňují mít spuštěnou plochu X serveru na pozadí, takže na ní můžete mít rozdělanou práci a připojovat se podle potřeby.

Pro oba servery lze použít řadu parametrů. Ale důležité je především číslo spuštěného X serveru, který bude čekat na vaše připojení. V rámci spuštěné plochy ho najdete v rámci proměnné DISPLAY, mezi proměnnými, které vypíše příkaz env

Pro Xspice server je důležité také číslo TCP portu na které musí vést ssh tunel. Xpra ho při spouštění nepotřebuje, protože počítá s tím, že klient může přistupovat přes SSH proxy, pro kterou má podporu.

remote-desktop[edit]

Je jednoduchý wrapper, který má uživatelům maximálně zjednodušit nahození vzdálené plochy a zamezit tomu, aby docházelo ke konfliktu v případě, že je na jednom stroji spuštěno více instancí X serveru.

Přes tento wrapper si můžete X server pro vzdálenou plochu nejenom nahazovat, ale i shodit.

Xspice[edit]

Upozornění Pro spouštění plochy na vzdáleném stroji využívejte výhradně remote-desktop
Poznámka
~$ remote-desktop start xspice

Xspice lze pustit pochopitelně i manuálně, ovšem pokud nepoužijete nohup zůstane běžet na popředí. Abyste ho mohli nechat běžet na pozadí, musíte použít screen nebo tmux.

Poznámka Následující ukázkový příklad demonstruje, jak lze jedním příkazem spustit Xspice, tak aby běžel rovnou v okně odpojeného screenu:
username@k23-177:~$ screen -d -m /usr/bin/Xspice --password heslo --xsession /usr/bin/xfce4-session :1

Nicméně se vyvarujte manuálního spouštění, protože byste se mohli dostat do konfliktu z již používaným TCP portem, či jinou instancí X serveru.

Pokud zapomenete s jakými parametry byl váš Xspice server spuštěný, využijte akci list utility remote-desktop, s parametrem full. Viz příklad:

Poznámka
~$ remote-desktop list full
:1   21099: /usr/bin/python2 /usr/bin/Xspice --password heslo --video-codecs h264 --image-compression auto_lz --port 5900 :1

Jak vidíte, vypíše se vám nejenom číslo spuštěného X serveru, ale také port, na kterém váš Xspice server naslouchá a heslo, které bude očekávat od klienta.

ssh tunel[edit]

Abyste se na spuštěný Xspice server dostali zvenčí, musíte na svém lokálním stroji nahodit ssh tunel, kterým se přes stroj turtle, nebo postel dostanete na port laboratorního stroje, na kterém čeká na vaše připojení. SSH tunel nemusíte mít spuštěný pořád. Můžete si ho nahodit podle potřeby, jen když budete chtít se svou vzdálenou plochou pracovat. Tunelů můžete mít spuštěných i více, na různé porty. Například si můžete tímto způsobem tunelovat ssh připojení a rovnou se přihlašovat na konzoli vzdáleného stroje.

Poznámka Toto je ukázkový příklad ssh tunelu, kterým bych přistupoval na Xspice server spuštěný výše uvedeným příkazem na stroji k23-177:
notebook:~$ ssh -fN -L 5900:k23-177:5900 username@postel.felk.cvut.cz

Klientské aplikace pro spice protokol[edit]

Linux 
Můžete použít buď spicec (klient spouštěný z příkazové řádky), nebo spicy (GTK klient s GUI). K protunelování spojení lze použít ssh na konzoli. Viz použití spicec a spicy z příkazového řádku:
~$ spicec -h localhost -p 5900 -w heslo
~$ spicy -h localhost -p 5900 -w heslo
MS Windows 
V prostředí MS Windows lze použít virt-viewer a k protunelování putty
Mac OS X 
V prostředí Mac OS X by měl být použitelný Remote Viewer (hledej v adresáři dmg) viz také info zde
Android 
Pro Android existuje na google play aSPICE, ovšem nemám zkušenost s nastavením tunelování portu.

Xpra[edit]

Upozornění Pro spouštění plochy na vzdáleném stroji využívejte výhradně remote-desktop
Poznámka
~$ remote-desktop start xpra

Také Xpra může být spuštěna manuálně, ale je to zbytečné. Opět, pokud vás zajímá s jakými parametry byla Xpra spuštěna – například, jestli běží s podporou audia, využijte akci list utility remote-desktop, s parametrem full. Při spuštění nebo po zjištění výpisem seznamu běžících instancí přes remote-desktop si poznamenejte pořadové číslo svého grafického sezení na dané stanici (diplay ID). Toto číslo je potřeba vyplnit do dialogu při navazování spojení z Xpra klienta.

Na vlastní počítač je potřeba nainstalovat Xpra klienta, který je k dispozici pro všechny běžné desktopové systémy

MS Windows 
https://xpra.org/trac/wiki/Download nebo https://winswitch.org/downloads
Mac OS X 
https://xpra.org/trac/wiki/Download nebo https://winswitch.org/downloads
Android 
https://android-apk.org/cc.snapp.app_xpra nebo https://winswitch.org/downloads

Na svém počítači pak spusťte Xpra klienta a zvolte akci connect. Vyberte možnost SSH->SSH a vyplňte přihlašovací údaje, lokální hostname stanice a číslo grafického sezení (diplay ID).

Xpra connect dialog

Při prvním připojení k dané stanici může být potřeba přijmout cílovou stanici do seznamu známých/ověřených SSH počítačů v terminálovém okně, ze kterého je Xpra klient spuštěný. V grafickém výstupu se může takový stav jevit jako zablokování bez jakékoliv aktivity. Zkontrolujete výstup v okně,

Ukončení vzdálené plochy[edit]

Pro "vypnutí" vzdálené plochy použijte opět utilitu remote-desktop. Nejprve si přes akci list zjistěte aktuální číslo desktopu, který chcete vypnout[2], a pak použijte akci stop

Poznámka
~$ remote-desktop list
:1 xpra
:2 xpra
:3 xspice
~$ remote-desktop stop 2

Informace pro administrátory[edit]

Jelikož občas stroje vyžadují servisní zásah, a vzdálená plocha umožňuje non-stop práci v laboratoři, je nutné vědět, jakým způsobem lze zjistit, zda-li na stroji někdo pracuje, či ne.

Z bezpečnostních důvodů si uživatelé spuštěné procesy navzájem nevidí. Tzn. že následující operace může provádět pouze uživatel přepnutý na lokálního uživatele root

Běží na stroji nějaká vzdálená plocha?[edit]

To se dá zjistit snadno a rychle přes akci list utility remote-desktop.

Poznámka
root@k23-185:~# remote-desktop list
:1 xpra
:2 xpra
:3 xpra
:4 xpra
:5 xpra

Nejde o uživatele, co po ukončení práce zapomněli svoji vzdálenou plochu ukončit? To zjistíte záhy.

Monitoring uživatelské aktivity na textové konzoli[edit]

Pro tyto účely je v disklessovém systému nainstalován balík utilit acct, který průběžné zaznamenává co a kdy uživatel spustil.

I když si uživatelé svoje procesy vzájemně nevidí, některé operace, použít mohou. Kupř. si mohou přes utilitu last vypsat kdo a kdy byl (či je) zároveň s nimi na stroji přihlášen:

Poznámka
~$ last
kapical1 pts/0        192.168.136.200  Thu Apr 30 09:50   still logged in
basarpet pts/1        192.168.136.200  Mon Apr 27 17:41 - 20:20  (02:38)
pisa     pts/0        192.168.136.200  Mon Apr 27 12:10 - 01:28  (13:17)
reboot   system boot  5.4.0-3-amd64    Mon Apr 27 12:10   still running
…

Také si mohou vypsat kolik celkem času strávil na laboratorním stroji od posledního startu:

Poznámka
root@k23-189:~# ac -p
        basarpet                             2.65
        pisa                                13.30
        kapical1                             4.96
        root                                15.54
        total       36.44

Denní statistiku konkrétního uživatele lze vypsat takto:

Poznámka
root@k23-189:~# ac -d pisa
Apr 27  total       11.82
Apr 28  total        1.48

Ovšem pro administrátora, který potřebuje stroj restartovat, je mnohem důležitější jakou operaci a kdy některý z uživatelů pustil naposled, aby viděl, jestli náhodou někdo z nich stroji nepracuje. K tomu slouží utilita lastcomm, které běžný uživatel použít nemůže, protože nemá přístup k logu /var/log/account/pacct, do kterého se aktivita všech uživatelů zaznamenává.

Poznámka
root@k23-189:~# date
Thu 30 Apr 2020 03:33:42 PM CEST
root@k23-189:~# lastcomm --user pisa | head -1
bash             S   X pisa     __         0.00 secs Mon Apr 27 12:10
root@k23-189:~# lastcomm --user basarpet | head -1
bash             S   X basarpet __         0.01 secs Mon Apr 27 17:41

Jak je vidět na tomto konkrétním případě, poslední operací, kterou uživatel pisa na stroji k23-189 udělal, bylo ukončení (X) shellu, od kterého uplynulo víc jak 39 hodin, a uživatel basarpet svůj shell ukončil před 34 hodinami, takže bude možné stroj k23-189 příkazem shutdown korektně vypnout.

Poznámka Aktivitu uživatele pisa z 28. dubna způsobil zřejmě některý z démonů běžících na odpojené vzdálené ploše.

https://www.tecmint.com/how-to-monitor-user-activity-with-psacct-or-acct-tools/

Monitoring uživatelské aktivity v prostředí X serveru[edit]

Jak zjistit čas od poslední akce na vzdálené ploše

Balík suckless-tools

while true ; do sleep 1; DISPLAY=:1 xssstate -i ; done

Jak identifikovat okna spuštených aplikací

wmctrl -lp

Přístup na stroje s MS Windows[edit]

Laboratorní stroje s MS Windows se vyskytují pouze v rámci infrastruktury Katedry řídicí techniky.

Prozatím na ně není vzdálený přístup není. Přesněji řečeno byl by, ale pouze přes SSH. Prozatím nebylo rozhodnuto, jakým způsobem s nimi bude možné pracovat. Jednou z možností je zpřístupnit jejich plochu přes RDP, tunelované podobným způsobem, jako když chcete přistupovat na disklessový laboratorní desktop.

Ovšem, s největší pravděpodobností se využije pro práci s aplikacemi pro MS Windows Citrix.


  1. Generický uživatel guest je povolen pouze v rámci lokální sítě. Z vnějšku se na něj nedá přihlásit přes SSH.
  2. Na jednom stroji mohou běžet vzdálené plochy pro víc uživatelů. Ba dokonce i jeden uživatel může mít spuštěno několik vzdálených ploch.