Portál AbcLinuxu, 8. května 2025 01:12

Dotaz: Jak rozchodit zabezpečené VNC

paul2no avatar 30.4.2020 15:52 paul2no | skóre: 16 | blog: Paulovo doupě | Praha
Jak rozchodit zabezpečené VNC
Přečteno: 412×
Odpovědět | Admin

Snažím se na svém PC rozchodit vzdálenou plochu přes VNC, se zabezpečením, aby to bylo bezpečné i při použití přes internet a současně abych se vyhnul použití rovnáku na ohýbák v podobě SSH tunelu. Nainstaloval jsem si tigervnc, nastavil podle návodu a spustil takto:

vncserver -SecurityTypes X509Vnc -X509Key /home/paul/.vnc/orange_vnc.pem -X509Cert /home/paul/.vnc/orange_vnc.crt -geometry 1920x1080
Certifikáty jsem si vygeneroval sám. VNC server se spustí, jenže z aplikace Remmina se nejsem schopen připojit - chce to po mě certifikát klienta. Ani z jiných klientů co jsem zkusil se mi připojit nedařilo. Zajímavé je že z Androidu pomocí aplikace bVNC se připojím, stačilo napoprvé certifikát ručně potvrdit (ale to je jediná aplikace, která funguje).

Pokud však VNC spustím bez zabezpečení:

vncserver -SecurityTypes VncAuth -geometry 1920x1080
tak to funguje. Tak kde je problém? V nastavení serveru nebo v klientech?

Pravda, láska a elektrická trakce zvítězí nad lží, nenávistí a trakcí motorovou.

Řešení dotazu:


Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

k3dAR avatar 30.4.2020 19:10 k3dAR | skóre: 63
Rozbalit Rozbalit vše Re: Jak rozchodit zabezpečené VNC
Odpovědět | | Sbalit | Link | Blokovat | Admin
nedavno sem to nekde zahlid, v Remmina musis pouzit rovnak na ohejbak v podobe u spojeni zadani openssl neco neco do "Prikaz pred pripojenim" a do "Prikaz po odpojeni" to same, resp. pro uzavreni ssl tunelu... nicmene osobne provozuju Remminu pres SSH tunel a povazuju to za normalni nerovnakovane reseni ;-)
porad nemam telo, ale uz mam hlavu... nobody
Řešení 1× (OldFrog {Ondra Nemecek})
30.4.2020 20:43 Andrej | skóre: 51 | blog: Republic of Mordor
Rozbalit Rozbalit vše Re: Jak rozchodit zabezpečené VNC
Odpovědět | | Sbalit | Link | Blokovat | Admin

<off_topic>Předně doporučuji místo VNC použít Spice (například pomocí x11spice). To je o galaxii nebo dvě modernější protokol. Navíc nemá tolik problémů a nekompatibilit kolem SSL. Klient je třeba spicy a server je (pro připojení k existujícímu X11) třeba x11spice --allow-control --display :0 --hide --generate-password 'localhost:5900'. Samozřejmě je i spousta možností, jak vytvářet vzdálené virtuální desktopy bez „fyzického“ X-serveru, stejně jako u VNC.</off_topic>

Zpět k VNC:

Já bych se na to … a prostě bych se připojil přes rovnák na ohýbák, tedy SSH. Nastavil bych si tunel (ssh -f -C -N -L '[::1]:<port na klientovi>:[::1]:<port na serveru>' můj.server.kdovíkde) a basta. Tohle vyřeší (tedy, obejde) všechny možné problémy s nastavením VNC zabezpečení na serverech i klientech. Další plus: Server lze pak jednoduše omezit na localhost a nemít otevřený VNC port externě.

Aby se to spojení nemuselo navazovat manuálně a aby se automaticky obnovovalo při změně síťového připojení, jako systemd unit to může vypadat třeba takto:

[Unit]
Description=VNC SSH Tunnel
ConditionPathExists=|/home/vncclient/.ssh/id_rsa
After=network.target

[Servicev]
User=vncclient
ExecStart=/usr/bin/ssh -C -N -T \
    -o ServerAliveInterval=10 \
    -o ServerAliveCountMax=3 \
    -o ExitOnForwardFailure=yes \
    -o ConnectTimeout=15 \
    -i /home/vncclient/.ssh/id_rsa \
    -L [::1]:5900:[::1]:5900 \
    vncserver@můj.server.kdovíkde
RestartSec=3
Restart=always

[Install]
WantedBy=multi-user.target

Jakmile jsou náležitě nakonfigurované uživatelské účty, stačí to^^^ už jenom dát třeba do /etc/systemd/system/vnc-tunnel.service a pak spustit systemctl daemon-reload a systemctl enable --now vnc-tunnel.

Uživatel vncserver na serveru samozřejmě musí mít náležitý veřejný klíč ve svém ~/.ssh/authorized_keys a je dobré takového speciálního uživatele všemožně omezit, aby skoro nic nesměl. Drobné mínus je, že vncclient na klientovi musí mít soukromý SSH klíč v plaintextu, pokud člověk nechce moc kouzlit se SSH_ASKPASS a/nebo spouštět vncclientovi jeho vlastní ssh-agent. No ale co už; od toho jsou přístupová práva + šifrované disky, aby to tolik nevadilo.

Případně se dá na klientovi použít přímo vlastní uživatelský účet místo toho dedikovaného vncclienta. V takovém případě se dá unit třeba do ~/.config/systemd/user/vnc-tunnel.service a pak stačí jenom systemctl daemon-reload a systemctl --user enable --now vnc-tunnel.

Celkem triviálně se dá taky zařídit, aby server poskytoval (kromě přístupu ke svému vlastnímu VNC) taky jakýsi hub pro přístup na spoustu jiných strojů přes VNC — třeba v případě, že jsou ty stroje ně nějakých zastaralých IPv4 sítích a nedá se na ně přímo dostat.

...
ExecStart=/usr/bin/ssh -C -N -T \
    -o ServerAliveInterval=15 \
    -o ServerAliveCountMax=4 \
    -o ExitOnForwardFailure=yes \
    -o ConnectTimeout=15 \
    -i /home/vncclient/.ssh/id_rsa \
    -L [::1]:5900:[::1]:5900 \
    -R [::1]:5923:[::1]:5901 \
    vncserver@můj.server.kdovíkde
...

Tady^^^ je -L [::1]:5900:[::1]:5900 tunel z klienta na server a -R [::1]:5923:[::1]:5901 je tunel ze serveru na klienta.

Pro Spice bude fungovat stejná konfigurace — kdyby náhodou byl i tam problém s přímou podporou SSL. (Dokonce má Spice taky obvykle port 5900.)

30.4.2020 22:42 OldFrog {Ondra Nemecek} | skóre: 36 | blog: Žabákův notes | Praha
Rozbalit Rozbalit vše Re: Jak rozchodit zabezpečené VNC
Mě to takhle přijde taky lepší i bezpečnější. Navíc si k sobě tímto způsobem můžete "protunelovat" i libovolné další porty (databáze, debug porty a monitoring atd.), což se docela hodí.
-- OldFrog
k3dAR avatar 30.4.2020 23:46 k3dAR | skóre: 63
Rozbalit Rozbalit vše Re: Jak rozchodit zabezpečené VNC
nicmene pokud tazatel jine porty nepotrebuje, tak tunel SSH lze zakliknout v te Remmina kterou pouziva ;-)
porad nemam telo, ale uz mam hlavu... nobody
1.5.2020 20:00 OldFrog {Ondra Nemecek} | skóre: 36 | blog: Žabákův notes | Praha
Rozbalit Rozbalit vše Re: Jak rozchodit zabezpečené VNC
jj, mají to k zakliknutí i databázoví klienti
-- OldFrog
k3dAR avatar 1.5.2020 00:01 k3dAR | skóre: 63
Rozbalit Rozbalit vše Re: Jak rozchodit zabezpečené VNC
doporučuji místo VNC použít Spice (například pomocí x11spice). To je o galaxii nebo dvě modernější protokol.
no tak sem to tedy zkusil, sice presun oken je z obsahem a ne jen drat jako u VNC, ale zase to nechava duchy, lame se prekresleni, zobrazuji se artefakty, je to mnohem pomalejsi, napr prehravani 720p videa pres mpv s x11vnc (+ patricne parametry pro lepsi chovani) je plynule, s x11spice je to tak 5fps ;-)
porad nemam telo, ale uz mam hlavu... nobody
3.5.2020 05:32 Andrej | skóre: 51 | blog: Republic of Mordor
Rozbalit Rozbalit vše Re: Jak rozchodit zabezpečené VNC

A není v té síti úsek, kde se to převádí z ethernetu do psaníček pro holuby a pak zase u protějšího holubníku zpátky?

Stejně jako VNC, i Spice má na spoustu různých kodeků (pro statický obraz i video) a parametrů. Nikdy jsem se jimi příliš nezabýval, protože mi vzdálený přístup připadal obstojný a video jsem neřešil. Ve FAQ je položka Spice has poor video performance — tak třeba by něco z toho mohlo pomoct.

Taky jde o to, jestli to je „nativní“ virtuální stroj s QXL driverem nebo x11spice připojený k existujícímu X-serveru. S tím QXL driverem mi šly záležitosti typu glxgears přes celou obrazovku většinou rozumně plynule. (Ale měl jsem na VM malé rozlišení, obvykle FullHD nebo tak.) U x11spice netuším, jak dobře to má zvládat video.

Teď jsem zkusil full-screen video na 4k přes VNC s x11vnc a dává mi to asi tak 0,5 fps. Spice totéž. Tak nevím.

k3dAR avatar 3.5.2020 13:10 k3dAR | skóre: 63
Rozbalit Rozbalit vše Re: Jak rozchodit zabezpečené VNC
zkousel sem to z NB spojeneho pres Wifi(rychlost cca 140Mbps) s routerem kde je druhej NB(Xfce na zeleze) na GLAN, oboje FullHD a ve stejne situaci...

u x11vnc pouzite "-ncache_cr -noxdamage -noxrecord" u x11spice nic takoveho nevidim...

to video byl jen test rychlosti a prekreslovani... ale artefaktry a pomalost u x11spice byli i normalne v desktopu...

jinak i pri spojeni na virtual pouzivam radeji na nem x11vnc, nez spice-clienta protoze je to take rychlejsi, plynujejsi, spice NE po siti ale samozrejme pouzivam lokalne v virt-manager kde pomalost ani artefakty nejsou...

btw: x11spice pouzite ze zdrojaku a pokud se nepletu jedine distro co ho ma v "balicku" je Arch, takze bych to nepovazoval ze uz to vnc server nahradilo ;-)
porad nemam telo, ale uz mam hlavu... nobody

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.