Vzdálený přístup k jinému počítači je velmi důležitá věc, bez které se neobejdeme. Slouží jak ke správě vzdáleného počítače, vzdálené pomoci nebo vzdálénému odstraňování chyb, tak i přímo ke každodenní práci. Někdy může být i použit vzdálený přístup k monitoringu počítače či "šmírování".

Rozeznáváme dva druhy vzdáleného přístupu, "grafický" a "textový".

1. Při "grafickém"" (nebo obrazovém, nevím jak to mám přesně nazvat) vzdáleném přístupu se nám po síti přenášejí nějakým protokolem obrazovka vzdáleného počítače, naše klávesnice a myš, kterými vzdálený počítač ovládáme. Někdy se mohou přenášet i USB zařízení a tiskárny oběma směry, či vzdálený zvuk.

Vzdálený "obrazový" přístup na Windows 10

rdp w10

2. Při "textovém"" vzdáleném přístupu vetšinou používáme tzv. terminál. Přenáší se nám naše klávesnice na vzdálený počítač a "textová obrazovka" vzdáleného počítače na náš počítač. Velmi zjednodušeně řečeno.

Vzdálený "textový" přístup na server s Linuxem a zobrazení programu htop

ssh linux

Vzdálený přístup je v podstatě program, rozdělený na dvě části. Jedna část (server) je na vzdáleném počítači a druhá část (klient) je na našem počítači.

Vzájemná komunikace mezi klientem a serverem je zabezpečena nějakým protokolem (RDP, VNC, ssh, telnet), přenos dat oběma směry se uskutečnuje po síti internet protokolem IPv4 nebo IPv6. footnote:[Pokud nevíte, co to je protokol, podívejte se sem]

Server a klient mohou mít různý operační systém.

Co musím udělat, aby to fungovalo

  1. Musí být zabezpečeno síťové spojení mezi klientem (náš počítač, tablet nebo telefon) a serverem (vzdálený počítač). Pokud to z nějakého důvodu nejde, dá se to někdy obejít tak, že použijeme počítač třetí strany (proxy), ke kterému mají přístup jak klient, tak server (Takto třeba funguje TeamViewer nebo AnyDesk).

  2. Musíme mít na klientu i serveru nainstalovaný a nakonfigurovaný software, který vzdálený přístup umožnuje.

  3. Musím mít na vzdáleném počítači nakonfigurované nějaké uživatele, kterým je povolen vzdálený přístup a musím znát minimálně uživatelské jméno a heslo (někdy je potřeba i něco dalšího, např. při dvoufázovém ověření).

Shrnuto: musím vědět jak se připojit (protokol), potom IP adresu (nebo doménové jméno) stroje, kam se hlásím, uživatele a heslo.

Vzdálený přístup ke strojům se systémem Windows

Remote Desktop Protocol (vzdálená plocha)

Remote desktop protokol se používá jak pro administraci, tak i pro běžnou práci obyčejných uživatelů (třeba účetních nebo obsluhy objednávek). Funguje tak, že pro každého vzdáleně přihlášeného uživatele vytváří jeho vzdálenou obrazovku, klávesnici a myš, a umožňuje třeba přesměrovávat na lokální tiskárnu.

Vzdálená plocha na serveru poslouchá obvykle na TCP portu 3389 a UDP portu 3389. Sám popis RDP protokolu byl částečně zveřejněn Microsoftem.

Dále budeme popisovat Windows Server 2019. U neserverových Windows (Windows XP, Windows Vista, Windows 7, Windows 8, Windows 8.1, Windows 10) je vzdálená plocha omezená, většinou umožňuje jenom přihlásit Administrátora nebo jednoho uživatele současně. U serverů je počet současně přihlášených uživatelů omezen nakoupenými CAL licencemi. Bez licencí jenom Administrátor a 3 uživatelé současně.

Nejprve si nastavíme server. Všechny ukázky jsou z ostrého, zalicencovaného (50 CAL licencí per device) a aktivovaného Windows Server 2019.

Nastavení služby Vzdálená plocha na serveru

Musíme zajistit automatické spouštění služby "Vzdálená plocha" po startu serveru. Dělá se to ze Správy počítače → Služby

Automatické spuštění služby po startu

rdp service

Nebo se to dá udělat ze Správce serveru → Přidat Role a funkce

rdp service add role

Já celý proces ukázat nemohu, protože na serveru to mám již udělané.

Toto není všechno. Mikrosoft chce za všechno peníze, takže musíme koupit CAL licence pro každého uživatele, který se bude vzdáleně přihlašovat (stojí asi 500 Kč). Licence se kupují většinou po 50 ks per device, nebo po 10 per user. Na serveru musíme tyto licence zapsat a aktivovat a ještě nastavit licenční server, jinak nám po 90 dnech přestane čerstvě nainstalovaný server přihlašovat vzdálené uživatele. Použité licence se dají za menší peníz koupit u winkey.cz (to není reklama).

Instalace licencí vzdálené plochy

Po zakoupení CAL licencí od Microsoftu nebo odjinud je musíme nainstalovat. Spustíme si průvodle licencováním vzdálené plochy. Dělá se to opět pomocí Správce Serveru → Nástroje → Správce licencování vzdálené plochy.

Celý postup je takový, že obdržíme po zakoupení licencí klíč, který vypadá nějak takto: K95QT-MYPK4-HKVPD-P4JBY-K79VQ (není to ostrý klíč), který je potřeba pomocí Správce licencování zadat a zaktivovat.

Potom je třeba ještě spustit licenční server.

Pokud všechno dopadne dobře, tak máme server zalicencovaný. Můžeme se o tom přesvědčit pomocí Diagnostiky licencování vzdálené plochy

Diagnostika licencování je v pořádku

rdp diagnostika licenci

Z obrázku je vidět, že mám nakoupeno padesát CAL licencí Per Device (to znamená, že je možné se přihlásit z 50 různých zařízení), 16 licencí je vyčerpáno a ještě 34 volných licencí je k dispozici. [1] [2]

Celé licencování se nemusí dělat hned po instalaci serveru, ale je možné ho udělat během 90 dní. Po tuto dobu bude vzdálená ploch fungovat bez licencí.

Konkrétně ukázat to nemohu, protože to mám hotové a určitě by se mi to rozbilo, kdybych to dělal znovu. Omlouvám se.

Řešení problému s licencováním vzdálené plochy, na který jsem narazil

Narazil jsem na problém, že licencování vzdálené plochy nechtělo chodit, přestože jsem měl licence řádně zakoupené, nastavené a zaktivované pomocí průvodce. Problémy byly dva.

  1. špatná hodnota v registru

  2. server nemohl najít licenční server

Je-li zapnuto licencování musí být v registru hodnoty:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\RCM\Licensing Core\
PerUser šestnáctkově 4 nebo PerDevice šestnáctkově 2

Já jsem tam měl od průvodce nastavenou hodnotu 5.

Spuštění editoru registru

regedit1

Oprava na správnou hodnotu

regedit2 [3]. Editor registru je nebezpečná hračka.

Po opravě to stejně nechtělo chodit, diagnostika licencování hlásila, že nemůže najít licenční server.

Takto jsem to opravil:

gpedit.msc

Konfigurace počítače → Šablony pro správu → Součásti systému Windows → Služba Vzdálená plocha → Hostitel relací vzdálené plochy → Správa licencí → Použít určené licenční severy služba Vzdálená plocha: Povoleno Používané licenční servery "127.0.0.1" a ještě Nastavit licenční režim Vzdálená plocha: Povoleno Podle zařízení

Tučně napsané byl hlavní problém, pole Používané licenční servery nebylo vyplněno.

Spuštění Group Policy Editoru

gpedit1

Oprava licenčního serveru

gpedit2

Oprava Podle zařízení

gpedit3

V případě problémů se vzdálenou plochou je dobré výše uvedené věci zkontrolovat. [4] [5]

Přidání uživatele vzdálené plochy

Dále musíme přidal uživatele, kteří se mohou vzdáleně připojit a zařadit je do skupiny "Remote Desktop Users"

Jednoduchý a rychlý postup z příkazové řádky (spustíme cmd.exe jako Administrator)
Přidání obyčejného uživatele
net user uzivatel1 dlouheheslo. /add /active:yes (1)
net localgroup "Remote Desktop Users" uzivatel1 /add (2)
1 Přidám lokálního uživatele, nastavím mu heslo a řeknu, že je aktivní
2 Nově vytvořeného uživatele přidám do skupiny "Remote Desktop Users"
Přidání administrátora
net user admin dlouhehesloneniveslo. /add /active:yes (1)
net localgroup "Remote Desktop Users" admin /add (2)
net localgroup "Administrators" admin /add (3)
1 Přidám lokálního uživatele, nastavím mu heslo a řeknu, že je aktivní
2 Nově vytvořeného uživatele přidám do skupiny "Remote Desktop Users"
3 Udělám z admina skutečného Administrátora tak, že ho přidám do skupiny "Administrators"
Zdlouhavý a složitý postup klikáním myší

Obrázkový postup je šílenost:

1. Nastavení→Účty→Jiní uživatelé

rdp users1

2. Přidat do tohoto počítače někoho dalšího

rdp users2

3. Nemám přihlašovací údaje této osoby

rdp bezms

4. Přidat uživatele bez účtu Microsoft

rdp users3

5. Konečně jsme u vytvoření účtu

rdp users4

To není všechno, musíme nově přidaného uživatele zařadit do skupiny "Remote Desktop Users"

Nástroje pro správu → Správa počítače → Místní uživatelé a skupiny → Skupiny

rdp group1

Najdeme Remote Dektop Users a stiskneme Přidat

rdp group2

Teď musíme stisknout tlačítko Upřesnit…​

rdp group3

Teď musíme stisknout tlačítko Najít

rdp group4

Najdeme našeho uživatele a stiskneme "OK"

rdp group5

Teď musíme opět stisknout "OK"

rdp group6

A ještě jednou OK

rdp group7

A teď se jdeme vyvětrat, protože to byl nadlidský výkon, už nikdy více. Naštěstí máme s uživatelem hotovo.

Tady krásně vidíte, že příkazový řádek je velmi dobrý nástroj.

Skript s přidáním všech uživatelů (práce 10 minut)
net user cernak.jiri         hesloneniveslo /add /active:yes
net user hlavackova.eliska   hesloneniveslo /add /active:yes
net user hrzan.ondrej        hesloneniveslo /add /active:yes
net user chudy.marek         hesloneniveslo /add /active:yes
net user jakoubek.david      hesloneniveslo /add /active:yes
net user jezek.jan           hesloneniveslo /add /active:yes
net user jilek.petr          hesloneniveslo /add /active:yes
net user john.tomas          hesloneniveslo /add /active:yes
net user kaplan.martin       hesloneniveslo /add /active:yes
net user kouba.dalimil       hesloneniveslo /add /active:yes
net user martinkova.nela     hesloneniveslo /add /active:yes
net user nyvltova.michaela   hesloneniveslo /add /active:yes
net user plocek.martin       hesloneniveslo /add /active:yes
net user pospisil.jan        hesloneniveslo /add /active:yes
net user potockova.nikola    hesloneniveslo /add /active:yes
net user solawa.kordian.adam hesloneniveslo /add /active:yes
net user suchanek.adam       hesloneniveslo /add /active:yes
net user sabata.jan          hesloneniveslo /add /active:yes
net user sebesta.jakub       hesloneniveslo /add /active:yes
net user subrt.stepan        hesloneniveslo /add /active:yes
net user tran.nam.pham       hesloneniveslo /add /active:yes

net localgroup "Remote Desktop Users" cernak.jiri         /add
net localgroup "Remote Desktop Users" hlavackova.eliska   /add
net localgroup "Remote Desktop Users" hrzan.ondrej        /add
net localgroup "Remote Desktop Users" chudy.marek         /add
net localgroup "Remote Desktop Users" jakoubek.david      /add
net localgroup "Remote Desktop Users" jezek.jan           /add
net localgroup "Remote Desktop Users" jilek.petr          /add
net localgroup "Remote Desktop Users" john.tomas          /add
net localgroup "Remote Desktop Users" kaplan.martin       /add
net localgroup "Remote Desktop Users" kouba.dalimil       /add
net localgroup "Remote Desktop Users" martinkova.nela     /add
net localgroup "Remote Desktop Users" nyvltova.michaela   /add
net localgroup "Remote Desktop Users" plocek.martin       /add
net localgroup "Remote Desktop Users" pospisil.jan        /add
net localgroup "Remote Desktop Users" potockova.nikola    /add
net localgroup "Remote Desktop Users" solawa.kordian.adam /add
net localgroup "Remote Desktop Users" suchanek.adam       /add
net localgroup "Remote Desktop Users" sabata.jan          /add
net localgroup "Remote Desktop Users" sebesta.jakub       /add
net localgroup "Remote Desktop Users" subrt.stepan        /add
net localgroup "Remote Desktop Users" tran.nam.pham       /add

Server máme hotov. Jdeme ukázat, jak se to používá na klientovi.

Pokud by nám nechtělo vzdálené připojení z klientů fungovat, je potřeba zkontrolovat, zda jsou povolená příchozí spojení na TCP port 3398 ve firewallu.

Připojení klienta

Windows klient pro vzdálenou plochu se jmenuje mstsc.exe. Dá se spustit přímo, nebo můžeme použít hledání a napsat "Vzdálená plocha" a spustit.

V úvodním přihlašovacím dialogu vyplníme do políčka Počítač IP adresu nebo jméno hosta, rozlikneme možnosti a vyplníme uživatele.

IP adresa a uživatel

mstsc1

Heslo

mstsc2

Toto upozornění možno ignorovat

mstsc3

Problém je ten, že certifikát, který je nastaven na serveru neověřila žádná důvěryhodná certifikační autorita. Neznamená to, že by spojení se serverem bylo nešifrované. Klidně můžeme zaškrtnout Tento dotaz na připojení k tomuto počítači nezobrazovat a stisknout tlačítko Ano. [6]

Pokud nám někdo nepřestřihnul ethernetový drát (nebo wifi bezdrát), tak jsme vzdáleně na serveru.

Jsme tam

mstsc4

Připojení z Linuxu na Windows Server

Tady je to hodně jednoduché, nainstalujeme si třeba freerdp

Na Debianu a klonech (Ubuntu, Kubuntu, Mint apod)
sudo apt install freerdp2-x11
Načítají se seznamy balíků… Hotovo
Vytváří se strom závislostí
Načítají se stavové informace… Hotovo
freerdp2-x11 je již nejnovější verze (2.2.0+dfsg1-0ubuntu0.20.04.4). (1)
Následující balíky byly nainstalovány automaticky a již nejsou potřeba:
  linux-headers-5.4.0-156 linux-headers-5.4.0-156-generic linux-image-5.4.0-156-generic linux-modules-5.4.0-156-generic linux-modules-extra-5.4.0-156-generic
Pro jejich odstranění použijte „sudo apt autoremove“.
0 aktualizováno, 0 nově instalováno, 0 k odstranění a 33 neaktualizováno.
1 Již to mám dávno nainstalované, tak se nic nebude dít.

Freerdp je aplikace s otevřeným zdrojovým kódem a je portována na různé další platformy (OpenBSD, FreeBSD, MacOS, Android apod.)

Připojení na Windows lze zrelizovat přímo z příkazové řádky, ale lepší je si udělat jednoduchý skriptík a zařadit si ho do /home/uzivatel/bin

Připojovací skript wsrva.sh
#!/bin/bash

xfreerdp /u:jirka  /v:192.168.120.197 /p:hesloneniveslo. /w:1600 /h:1200 /cert-ignore (1)
1 /u: je uživatel; /v: je jméno hosta nebo IP adresa; /p: heslo; /w:1600 znamená šířka obrazovky /h:1200 je výška obrazovky; /cert-ignore je důležité kvůli nepodepsanému certifikátu (pokud tuto volbu nemáte, tak to při každém připojení prudí)
Připojení vzdálené plochy
jirka@jirka-Precision-T3610:~/myblack$ wsrva.sh (1)
[23:47:33:291] [195852:195853] [INFO][com.freerdp.core] - freerdp_connect:freerdp_set_last_error_ex resetting error state (2)
[23:47:33:291] [195852:195853] [INFO][com.freerdp.client.common.cmdline] - loading channelEx rdpdr
[23:47:33:291] [195852:195853] [INFO][com.freerdp.client.common.cmdline] - loading channelEx rdpsnd
[23:47:33:291] [195852:195853] [INFO][com.freerdp.client.common.cmdline] - loading channelEx cliprdr
[23:47:33:624] [195852:195853] [INFO][com.freerdp.primitives] - primitives autodetect, using optimized
[23:47:33:627] [195852:195853] [INFO][com.freerdp.core] - freerdp_tcp_is_hostname_resolvable:freerdp_set_last_error_ex resetting error state
[23:47:33:627] [195852:195853] [INFO][com.freerdp.core] - freerdp_tcp_connect:freerdp_set_last_error_ex resetting error state
[23:47:35:948] [195852:195853] [INFO][com.freerdp.gdi] - Local framebuffer format  PIXEL_FORMAT_BGRX32
[23:47:35:948] [195852:195853] [INFO][com.freerdp.gdi] - Remote framebuffer format PIXEL_FORMAT_RGB16
[23:47:35:998] [195852:195853] [INFO][com.winpr.clipboard] - initialized POSIX local file subsystem
[23:47:35:999] [195852:195853] [INFO][com.freerdp.channels.rdpsnd.client] - [static] Loaded fake backend for rdpsnd
[23:47:35:392] [195852:195853] [INFO][com.freerdp.core] - rdp_set_error_info:freerdp_set_last_error_ex resetting error state
1 Spuštení skriptu
2 Toto už jsou jenom hlášení o připojení
A jsme na serveru

rdp linux

Poznámka na konec: Je rozdíl mezi odpojením a odhlášením. Odpojení se dělá křížkem, odhlášení z menu Start.
Odpojení jenom přeruší spojení se serverem, všechna práce zůstane rozdělána a je možné později pokračovat (pokud mezitím někdo nerestartuje server).
Odhlášení ukončí veškerou rozdělanou práci a odhlásí uživatele.
Většinou to bývá tak, že se každý jednotlivý uživatel může vzdáleně přihlásit jenom jednou.
Přihlásí-li se stejný uživatel podruhé, první spojení zamrzne a chcípne.
Odhlášení z Windows Serveru

rdp odhlaseni

Úkol na dnešní hodinu.

Dostali jste papírek s vaším uživatelským jménem a heslem. IP adresu Windows Serveru napíšu na tabuli.

Připojíte se a budeme testovat, co server vydrží. Zaplácneme dvě mouchy jednou ránou.

Vy se něco prakticky naučíte a já zjistím, zda se server při velkém náporu zřítí, nebo to ustojí. Mám totiž pocit, že není úplně v kondici.

Aktualizace: Trapas s tím, že jsem se nemohl dostat na konzoli Windows Serveru a zjistit jakou má IP adresu spočíval v tom, že jsem zapomenul vypnout startování síťového rozhraní enp7s0. Takto to prostě na Gentoo Linuxu fungovat nemůže. Na hypervisoru (fyzický počítač, nosič virtuálních strojů) musí být aktivní pouze bridge br0 a potom virtuální stroj dostane od DHCP korektně IP adresu. 10 minut po vašem odchodu ze třídy jsem to opravit. Tady se v praxi projevil jeden nepříjemný Murphyho zákon: Předvádíte-li zákazníkovi vlastní software, určitě vyskočí chyba. Vyskočila. [7]

IP adresa Windows Serveru 2019 je 10.1.1.184. (IP adresa hypervisoru Gentoo Linuxu je 10.1.1.15).

Domácí úkol č.1

Zopakovat si instalaci Windows Serveru do virtuálního stroje VMVare Workstation nebo HyperV. Příští hodinu si uděláme praktický test nastavení vzdálené plochy a připojení k ní, jestli nám v tom nezabrání jiný Murphyho zákon ovšem :-)


VNC (Virtual Desktop Computing)

VNC je protokol, který přenáší zobrazení na monitoru ze vzdáleného počítače na lokální a umožňuje sdílet klávesnici a myš vzdáleného počítače.

Funguje velmi dobře při vzdálené správě. Uživatel vzdáleného počítače (pokud u počítače zrovna sedí), tak vidí co admin na jeho počítači dělá, může se s ním i přetahovat o klávesnici a myš.

VNC je v podstatě sdílená obrazovka, klávesnice a myš, na rozdíl od RDP, které vytváří pro každé jednotlivé sezení (session) virtuální obrazovku, klávesnici a myš.

Na vzdálený počítač se admin nemusí nijak "přihlašovat", avšak vzdálené přihlášení pro autorizované adminy je možné zabezpečit různým způsobem, nejčasteji heslem.

VNC se často používá i pro správu virtuálních počítačů, které běží na nějaké virtualizační platformě (KVM, Proxmox, apod.) a žádný fyzický monitor nemají.

VNC standardně poslouchá na TCP portech 5900 až 5906. Samotná komunikace mezi serverem a klientem většinou zabezpečená nebývá, proto je vhodné VNC používat pro lokální sítě nebo přes zabezpečený VPN tunel (OpenVPN, wireguard apod.).

VNC je platformově nezávislé, lze propojovat stroje s nejrůznější architekturou a operačním systémem.

Server i klient pro libovolné Windows

Připojení na Windows XP z Linuxu přes zabezpečený tunel wireguard

vnc linux klient

Vzdálená správa Windows XP pomocí VNC (na vzdáleném stroji je TightVNC)

vnx winxp2


TeamViewer

Tohle používám velmi vyjmečně, jenom když není zbytí. Ale je to poměrně populární a rošířená aplikace. Na rovinu řeknu, že to nemám rád, protože nevím pořádně, jak to funguje a jaká data to sbírá a kam je posílá. Navíc to chce běžet pořád jako služba a poměrně dost to zatěžuje počítač.

TeamViewer funguje na Windows, MacOS, Linuxu, ChromeOS, Raspberry Pi, Androidu a iOS.

teamviewer1

Asi nejjednodušší způsob použití je stáhnout si TeamViewer QuickSupport a spustit ho. Pro Windows se program jmenuje TeamViewerQS.exe pro Linux teamviewer_sq.tar.gz (tohle je archiv, který je nutno rozbalit a spustit program teamviewer)

Žádám o pomoc z Linuxu kolegovi, co má Windows

Linux
Pohled na archiv (levé okno) a rozbalené soubory (pravé okno)

teamviewer qs linux

Spouštím teamviewer.

Musíte souhlasit s licenčními podmínkami

teamviewer qs linux 2

Musím zatelefonovat kolegovi a říct mu ID 926 852 366 a heslo: gw8mhjfg

A můžeme požádat telefonem o pomoc

teamviewer qs linux3

Windows

Kolega spouští TeamViewerQS.exe a přijímá licenční podmínky,

teamviwer qs win1

potom zadává ID 926 852 366, které jsem mu řekl. Nemůže se ke mně připojit. teamviwer qs win2

Nefunguje to. Konec příběhu.


Zkusíme to obráceně, spojíme se z Linuxu na Windows, nepoužiji však na Linuxu Quick Support verzi, ale plnou verzi, kterou mám nainstalovanou zdřívějška.

Z Linuxu na Windows 10

Budu pracovat v terminálu (TeamViewer jde naklikat z menu, ale služba teamviewerd ne, protože ji mám standardně vypnutou)

Musím spustit službu teamviewerd (démon) na Linuxu a potom teamviewer (frontend)
jirka@jirka-Precision-T3610:~/vyuka_sspvc$ service teamviewerd start (1)
jirka@jirka-Precision-T3610:~/vyuka_sspvc$ teamviewer (2)

Init... (3)
CheckCPU: SSE2 support: yes
Checking setup...
Launching TeamViewer ...
Launching TeamViewer GUI ...
1 Spuštění služby příkazem service
2 Spuštení plné verze TeamViewer frontendu
3 Jeho hlášky
Zkouším zadat ID 163873514, které mi řekl kolega telefonem

teamviewer linux f1

Funguje to, zadávám kolegovo heslo: m4zc7whh

teamviewer linux3

Jsem u kolegy, toto je jeho obrazovka Windows 10

teamviewer linux 5

Tady se to podařilo.

Řešil jsem kdysi problém s nějakou paní a jejím poštovním klientem, nechtělo jí to číst zprávy, které byly na mém poštovním serveru. Přihlásil jsem se, ale po minutě mě to vykoplo, že nemám licenci, či co (hoši od TeamVieweru nejsou tak bezplatní, jak se tváří. No nečím se musí živit). Tak volám zpětně paní a ta mi řekla, že s tím měla dříve také problémy.

Nakonec jsme to vyřešili pomocí AnyDesk, který funguje lépe.

Perlička, po ukončení relace, mi to zbuchlo
jirka@jirka-Precision-T3610:~/vyuka_sspvc$ teamviewer

Init...
CheckCPU: SSE2 support: yes
Checking setup...
Launching TeamViewer ...
Launching TeamViewer GUI ...
Neoprávněný přístup do paměti (SIGSEGV) (core dumped [obraz paměti uložen]) (1)
jirka@jirka-Precision-T3610:~/vyuka_sspvc$
jirka@jirka-Precision-T3610:~/vyuka_sspvc$ service teamviewerd stop (2)
1 Tady to sebou řízlo natvrdo, neoprávněný přístup do paměti, to je fatální chyba.
2 Raději to uklidím, vůbec nevím, co ta služba provádí. Vypínám službu.

Vzdálený přístup ke strojům Linux, OpenBSD a jiným unixům

Přečtěte si o Secure Shellu a OpenSSH - konfigurace, přístup a zabezpečení, to je hlavní nástroj na vzdálený přístup.

Se secure shellem se dají dělat velká kouzla.


Vzdálený přístup k virtualizačním platformám

Virtualizační platformy jsou softwarové nástroje, které nám umožnují na jednom fyzickém hardwaru provozovat několik virtuálních počítačů. Virtualizační platforma (hypervisor) emuluje pro virtuální stroj (guest) hardware.

Nejznámější virtualizační platformy jsou:

  • KVM

  • HyperV

  • VmWare (Player, Workstation, vSphere a ESXi)

  • VirtualBox

KVM je zkratka z Kernel-based Virtual Machine přeloženo doslova je to virtuální stroj založený na jádře je virtualizační jaderný modul pro linuxové jádro, který jádru umožňuje fungovat jako hypervizor. Součástí oficiálního jádra je od verze 2.6.20, která vyšla v únoru 2007. Původně vznikl pro architekturu x86, ale byl později portován na System/390, PowerPC, IA-64 a ARM. Kromě toho byl také portován na jádra operačních systémů FreeBSD a illumos.

Vývoj původně probíhal v izraelské společnosti Qumranet, kterou v roce 2008 zakoupila americká společnost Red Hat.

Jedná se o svobodný software částečně pod licencí GNU GPL a částečně pod licencí GNU LGPL. Naprogramovaný je v jazyce C.

Architektura KVM

Kernel based Virtual Machine

KVM budeme používat na hraní s Linuxem, abychom nemuseli dělat velké úpravy na školních PC. Budeme používat jednoduchou konfiguraci, bez grafických nadstaveb.

K tomu, abychom mohli přistupovat k virtuálnímu stroji, jako bychom ho měli před sebou, nám poslouží spice protokol anebo VNC.

KVM a spice protokol

Pro Windows se používá virt-viewer-x64, v době psaní dokumentu verze 11 virt-viewer-x64-11.0-1.0.msi

Komunikaci pomocí spice protokolu je vhodné zabezpečit nějakou VPN, třeba Wireguardem.

Na Linuxu (Debian a deriváty) se klient instaluje takto:

$ sudo apt install virt-viewer
Část startovacího skriptu pro virtualizovaný MS Windows server 2019 v KVM na Gentoo Linuxu (soubor /etc/init.d/kvm-00-win2019)
 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
#!/sbin/openrc-run
# Copyright 1999-2016 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
extra_commands="zaloha zalstop"

NAME="win2019"
CISLO="00"
WINIMG="/home/vm/iso/SW_DVD9_Win_Server_STD_CORE_2019_1809.9_64Bit_Czech_DC_STD_MLF_X22-44999.ISO"
VIRTIMG="/home/vm/iso/virtio-win-0.1.217.iso"
VIRTDISK="/home/vm/win2019/win2019.qcow2"
ZALDISK="/mnt/backup/vm"
ZALOHA="${ZALDISK}/win2019/win2019.qcow2"
pidfile="/run/kvm-${NAME}.pid"
MEMORY=32000
CORES=4
PORT=59${CISLO}                 (1)
MAC="00:25:2d:36:e6:${CISLO}"
NETDEV="mp${CISLO}"
BR="br0"
TAP="tap${CISLO}"
CHANNEL=${CISLO}
SECRET="/etc/qemu/spice_secrets" (2)

depend() {
        use logger clock hostname net
}

start() {
  ebegin "Starting ${SVCNAME}"
  mkdir -p /run/kvm-${NAME}
  qemu-system-x86_64 --enable-kvm \
    -name ${NAME} \
    -drive driver=qcow2,file=${VIRTDISK},if=virtio \
    -m ${MEMORY} \
    -device virtio-net,netdev=${NETDEV},mac=${MAC} \
    -netdev tap,id=${NETDEV},ifname=${TAP},br=${BR} \
    -cdrom ${WINIMG} \
    -drive file=${VIRTIMG},index=3,media=cdrom \
    -rtc base=localtime,clock=host \
    -smp cores=${CORES} \
    -object secret,id=spice_sec,file=${SECRET} \
    -vga qxl -device virtio-serial-pci -spice port=${PORT},ipv4=off,ipv6=on,password-secret=spice_sec \
    -device virtserialport,chardev=spicechannel$CISLO,name=com.redhat.spice.1 -chardev spicevmc,id=spicechannel$CISLO,name=vdagent \
    -monitor unix:/run/kvm-${NAME}/monitor,server,nowait \
    -object rng-random,id=rng0,filename=/dev/urandom -device virtio-rng-pci,rng=rng0 \
    -daemonize \
    -pidfile ${pidfile}
  eend $?
}
1 Zde nastavuji TCP port, kde bude poslouchat spice protokol, v našem případě default 5900.
2 V tomto souboru /etc/qemu/spice_secrets je ukryto přihlašovací heslo.

Na zvýrazněném řádku je nastavení virtuální VGA karty (spice protokol).

Ukázka přihlášení na vzdálený hypervisor pomocí virt-viewer

Zadání IP adresy a portu vzdáleného stroje

Snímek obrazovky 20250324 210154

IP adresa se zadává ta, kterou má hypervisor (neboli železo), nikoliv ta, kterou má virtuální stroj. Pokud je na hypervisoru více virtuálních strojů, potom musí mít každý přiřezen svůj vlastní TCP port.

Zadání hesla

Snímek obrazovky 20250324 210417

A jsme na vzdáleném serveru

Snímek obrazovky 20250324 210906

Zadání Ctrl+Alt+Del se musí zadat pomocí zobrazeného menu nebo kombinací Ctrl+Alt+End, jinak neodemknete obrazovku vzdáleného serveru, ale restartujete svůj počítač.
Přihlášení na jiný virtuální stroj (port 5929)

Snímek obrazovky 20250324 211705

KVM a VNC protokol

SPráva KVM pomocí VNC protokolu je v podstatě stejná, jako u spice protokolu. Jenom se v konfiguraci virtuálního stroje vymění řádky

  -vga qxl -device virtio-serial-pci -spice port=${PORT},ipv4=off,ipv6=on,password-secret=spice_sec \
  -device virtserialport,chardev=spicechannel$CISLO,name=com.redhat.spice.1 -chardev spicevmc,id=spicechannel$CISLO,name=vdagent \

na:

  -vnc 192.168.2.16:1 -k en-us

Tato ukázka je nezabezpečená, je potřeba ji zabezpečit pomocí VPN. VNC protokol na KVM lze zapezpečit ješte pomocí certifikátů, ale je to zbytečně složité a nikdy jsem to nedělal.

Jako klienta můžeme použít libovolného VNC klienta, viz výše.

Proxmox

Proxmox je komerční opensource virtualizace založená na KVM. Proxmox používá k přístupu k virtualizovaným strojům standardní internetový prohlížeč. Nic není třeba instalovat a nastavovat. Ukázka nebude, protože jsem Proxmox přestal používat, kvůli některým dost závažným chybám a kvůli tomu, že některé důležité vlastnosti jsou dost placené.

Vmware ESXi

Vmware je komerční virtualizační platforma založená na upraveném (realtimovém) jádru Linuxu a vlastní Linuxové distribuci se zavřeným filesystémem. Je to velmi spolehlivé řešení, ale za poměrně velké peníze. Kdysi byly k dispozici některé produkty Vmware zdarma (např. Vmware ESXi server), ale už nejsou. Pro vzdálený přístup stačí celkem libovolný internetový prohlížeč. Ukázka nebude, nemám již nic běžícího k dispozici.


1. 50 licencí Per User by znamenalo, že se může až 50 uživatelů a je jedno z jakého počítače se přihlašují. Tyto licence jsou dražší.
2. Licence Per Device lze převést na licence Per User a obráceně. Měl jsem 10 licencí Per User a udělal jsem převod na 50 licencí Per Device. Předpokládám, že obrácený převod bude 50 licencí Per Device na 10 licencí Per User.
3. Pokud se budete hrabat v registru, stoprocentně si před tím udělejte zálohu. Jak se to dělá je třeba tady
4. Někdy jsou to skutečné horory, tato chyb mě stála dva dny práce, hledání po internetu a otravování kolegů administrátorů.
5. Další nepříjemnou věcí je to, že pokud najdete na internetu řešení vašeho problému, tak je to většinou anglicky a musíte si to přeložit do češtiny. V Group Policy Editoru je to obzvláštní chuťovka. Grrr.
6. Instalace certifikátů, které jsou podepsané certifikační autoritou patří k vyšší dívčí. Já to neumím a proto vám neřeknu, jak na to.
7. U maturity budou Murphyho zákony pronásledovat vás, studenty. Já o tom vím, a tak se budu tvářit, že chyba nenastala nebo že nevidím apod.