Visas sistēmas darbojas Tavs IP: 216.73.216.190 info@cloudhosting.lv +371 66 66 29 69 Klientu zona

← Visi jautājumi

Attālinātā darbvirsma Ubuntu 24.04 ar xrdp un Xfce

Lielāko daļu darba Linux serverī ērtāk paveikt caur SSH. Grafiskā darbvirsma ēd atmiņu, par kuru jūs maksājat, palielina uzbrukuma virsmu un aizkavējas visur, kur attēls pārzīmējas. Reizēm tā tomēr ir pareizā atbilde. Šeit ir aprakstīts, kā uz Ubuntu 24.04 palaist Xfce pa RDP, neatstājot pieteikšanās logu vaļā pret internetu.

Vispirms pārbaudiet, vai tā tiešām ir vajadzīga

Darbvirsma serverī ir attaisnojama, ja pārlūkam jāstrādā tīkla iekšpusē, teiksim, iekārtas saskarnei privātā VLAN, vai ja grafiskam rīkam nav komandrindas ekvivalenta. Vieglāki risinājumi nosedz lielu daļu no tā. Pārlūka gadījumā:

ssh -D 1080 alice@vps.example.com

Tas uz jūsu datora atver SOCKS5 starpniekserveri: norādiet Firefox uz 127.0.0.1:1080, un trafiks iziet no servera, bet attēlo vietējais pārlūks. Vienai programmai ssh -X prasa xauth un X11Forwarding yes uz servera, kā arī X serveri jūsu pusē, XQuartz uz macOS vai VcXsrv uz Windows; tas der vienam logam, nevis kaut kam, kas kustas. RDP ir vietā tad, ja gribat sesiju, no kuras var atvienoties un tajā atgriezties.

Cik atmiņas tas maksā

Skaitļi ir aptuveni. Dīkā stāvoša Xfce sesija caur xrdp ar vienu termināli aizņem 400 līdz 500 MB, ieskaitot Xorg, sesiju un xrdp palīgprocesus. Firefox ar piecām cilnēm pieliek 800 MB līdz 1,5 GB un dienas gaitā tikai aug. GNOME Shell bez videokartes prasītu 1,2 GB tikai apvalkam, tāpēc šeit tiek izmantots Xfce.

Tātad 2 GB ir apakšējā robeža vieglam administrēšanas darbam, 4 GB ir reālistiski, tiklīdz parādās pārlūks, un katrs papildu lietotājs izmaksā aptuveni vēl vienu pārlūku. Sekojiet arī procesoram, jo bez videokartes katru pikseli zīmē tas. Mūsu VPS plāni ļauj atmiņu palielināt vēlāk, tāpēc sāciet pieticīgi un mēriet ar free -m reālas slodzes laikā. Ja tā kļūst par kāda ikdienas darbastaciju, labāk der nomāts serveris.

Instalējiet Xfce, nevis pilnu darbvirsmu

sudo apt update
sudo apt install --no-install-recommends xfce4 xfce4-terminal dbus-x11 x11-xserver-utils

Ubuntu 24.04 metapakotne xfce4 iesaka desktop-base, tango-icon-theme, thunar-volman, xfce4-notifyd un xorg. Tās izlaižot, šajā solī paliekat bez X servera, un tas nekas, ja uzreiz turpināt ar nākamo soli: xorgxrdp nāk kopā ar xrdp un ir atkarīgs no xserver-xorg-core. Pakotne dbus-x11 dod dbus-launch, uz kuru Xsession skripti atkāpjas, ja sesijas kopne vēl nav palaista.

Neinstalējiet šeit xubuntu-desktop, ubuntu-desktop vai pieteikšanās pārvaldnieku: fiziskas konsoles, kurā pieteikties, nav, tāpēc lightdm vai gdm3 tikai turētu atmiņu.

xrdp ar Xfce sesiju

sudo apt install xrdp
dpkg -l xorgxrdp

Ubuntu 24.04 piegādā xrdp 0.9.24, un viss tālākais rēķinās ar to. --no-install-recommends šeit nelietojiet: bez xorgxrdp, kas ir viena no ieteiktajām pakotnēm, xrdp klusi atkāpjas uz Xvnc sesijām, kuras izskatās un uzvedas citādi. dpkg -l rinda parāda, vai tā ir klāt.

Trīs lietas paliek jūsu ziņā. Pirmkārt, dēmonam jānolasa TLS atslēga, tāpēc tam vajag grupu ssl-cert:

id xrdp
sudo adduser xrdp ssl-cert
sudo systemctl restart xrdp

Bez tās klients pieslēdzas, veic sarunu un uzreiz atvienojas, bet /var/log/xrdp.log rāda neveiksmi, atverot /etc/ssl/private/ssl-cert-snakeoil.key.

Otrkārt, root pieteikšanās. 0.9 sērijā failā /etc/xrdp/sesman.ini sadaļā [Security] ir AllowRootLogin=true, tāpēc jebkurā instalācijā ar uzstādītu root paroli root var pieteikties pa RDP. Apskatiet rindu un izslēdziet to:

sudo grep -n AllowRootLogin /etc/xrdp/sesman.ini
sudo sed -i 's/^AllowRootLogin=true/AllowRootLogin=false/' /etc/xrdp/sesman.ini
sudo systemctl restart xrdp-sesman

Treškārt, jāpasaka sesijai, ko palaist. Fails /etc/xrdp/startwm.sh beidzas ar savas funkcijas wm_start izsaukumu, kas uz Debian un Ubuntu ielasa /etc/X11/Xsession, un Xsession izpilda ~/.xsession, ja tāds fails ir. Katram lietotājam:

printf '#!/bin/sh\nexec /usr/bin/xfce4-session\n' > ~/.xsession
chmod +x ~/.xsession

chmod šeit ir kārtības labad, nevis prasība: /etc/X11/Xsession.d/50x11-common_determine-startup neizpildāmu ~/.xsession palaiž caur jūsu pieteikšanās čaulu, nevis izlaiž. Lai sesiju uzstādītu visiem, aizstājiet wm_start rindu faila startwm.sh beigās ar exec startxfce4.

polkit logi, par kuriem brīdina vecāki raksti, proti, krāsu pārvaldītas ierīces izveide un repozitoriju atsvaidzināšana, prasa colord, PackageKit un autentifikācijas aģentu, bet šeit nav neviena no tiem. Ja tos uzmet mantota instalācija, ņemiet vērā: .pkla risinājums uz 24.04 nedara neko, jo polkit 124 šo slāni vairs neuztur, un noteikumi tagad ir JavaScript mapē /etc/polkit-1/rules.d/.

Neļaujiet darbvirsmai iemidzināt serveri

Xfce atteikšanās logs pogas Iemidzināt un Hibernēt ņem no systemd-logind, un viens neuzmanīgs klikšķis izņem VPS no tīkla, līdz kāds ar konsoles piekļuvi to pamodina. Nomaskējiet mērķus, un logind ziņos, ka tie nav pieejami:

sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target

Neturiet 3389 atvērtu pret internetu

RDP portus skenē nepārtraukti, un xrdp pārbauda īstus sistēmas kontus caur PAM, tāpēc atvērts 3389 nozīmē, ka līdz čaulai atliek viena vāja parole. Piesieniet dēmonu pie loopback, faila /etc/xrdp/xrdp.ini sadaļā [Globals]:

port=tcp://127.0.0.1:3389
sudo systemctl restart xrdp
sudo ss -tlnp | grep 3389

Tur jāparādās tikai 127.0.0.1. Tad tunelis:

ssh -N -L 13389:127.0.0.1:3389 alice@vps.example.com

RDP klientu vērsiet uz localhost:13389; Windows 3389 bieži jau ir aizņemts.

Ja tunelis nav praktisks, ierobežojiet portu ugunsmūrī. Vispirms atgrieziet xrdp uz publisko adresi, jo dēmonam, kas piesiets pie loopback, nav ligzdas, ko noteikums varētu sargāt: uzstādiet port=3389 un pārstartējiet. Pēc tam atļaujiet SSH, pirms ieslēdzat ufw, citādi noklusētā ienākošā trafika liegšanas politika jūs izslēgs no mašīnas, kurai nav konsoles:

sudo ufw allow OpenSSH
sudo ufw allow from 203.0.113.10 to any port 3389 proto tcp
sudo ufw enable
sudo ufw status numbered

To ir vērts darīt tikai ar patiešām statiskām adresēm, jo vesels mājas interneta operatora diapazons neko neierobežo. Jebkurā gadījumā pārlieciet SSH uz atslēgām un izslēdziet paroļu autentifikāciju: tagad tas ir priekšdurvis.

Starpliktuve, skaņa un klienta diski

Teksta starpliktuve strādā abos virzienos bez konfigurācijas, par to atbild xrdp-chansrv, viens process uz sesiju; ja pgrep -a xrdp-chansrv neko neatgriež, pieslēdzieties no jauna. Kopēšana no Linux programmas, kas aizpilda tikai PRIMARY atlasi, proti, iezīmē, lai kopētu, un vidējais klikšķis, lai ielīmētu, līdz Windows nenonāk, tur vajag īstu ctrl+c.

Skaņa iet caur PipeWire, un pipewire-module-xrdp nāk kopā ar xrdp ieteiktajām pakotnēm, tātad jau ir uzstādīts. Tam vēl vajag PipeWire sesiju ar pipewire-pulse jūsu paša lietotāja vārdā, un servera instalācijā tādas var nebūt, tāpēc, ja gribat skaņu, pielieciet pipewire pipewire-pulse wireplumber. Vecākā pulseaudio-module-xrdp, uz kuru norāda citi raksti, Ubuntu repozitorijos nav.

Klienta diski pēc noklusējuma tiek pārsūtīti, jo EnableFuseMount noklusējums ir true, un tie parādās mapē ~/thinclient_drives, jo piegādātajam FuseMountName nav sākuma slīpsvītras. Montējums pazūd līdz ar sesiju, tāpēc nekad nevērsiet uz to rezerves kopēšanu. Lai to izslēgtu, faila /etc/xrdp/sesman.ini sadaļā [Chansrv], kur rinda ir zem komentāra, uzstādiet EnableFuseMount=false un pārstartējiet xrdp-sesman.

Sesijas un ko lasīt, kad nestrādā

Atvienota sesija turpina darboties ar visu, kas tajā atvērts, un trīs pamestas sesijas, katra ar pārlūku, mazu VPS pabeigs. Failā /etc/xrdp/sesman.ini, sadaļā [Sessions]:

KillDisconnected=true
DisconnectedTimeLimit=7200
IdleTimeLimit=0
MaxSessions=10

Vērtības ir sekundēs, DisconnectedTimeLimit tiek ignorēts, ja KillDisconnected nav true, un tieši šajā slazdā iekrīt vecāki raksti, viss zem 60 tiek pacelts līdz 60, un abi iestatījumi strādā tikai ar xorgxrdp sesijām.

Kad kaut kas nestrādā, lasiet šādā secībā:

sudo systemctl status xrdp xrdp-sesman
sudo tail -n 50 /var/log/xrdp.log
sudo tail -n 50 /var/log/xrdp-sesman.log
tail -n 50 ~/.xsession-errors

Zils xrdp ekrāns un tūlītēja atvienošanās pēc pareizas paroles nozīmē, ka sesijas komanda nostrādāja ar kļūdu, un ~/.xsession-errors pateiks, kura: parasti ~/.xsession norāda uz neinstalētu programmu vai failā pašā ir kļūda. Melns ekrāns ar dzīvu kursoru nozīmē, ka sesija sākās, bet logu pārvaldnieks ne. Ja pieteikšanās logs neparādās vispār, tas ir ugunsmūra vai piesaistes jautājums, tātad atpakaļ pie ss -tlnp. Atvienošanās tūlīt pēc TLS rokasspiediena parasti norāda uz ssl-cert grupu.

Beidzot, tastatūras izkārtojums. xrdp to ņem no klienta, un, kad uzminēts nepareizi, setxkbmap lv vai setxkbmap ru sesijas iekšpusē to salabo konkrētajai pieteikšanās reizei. Pastāvīgais risinājums ir /etc/xrdp/xrdp_keyboard.ini, kas xorgxrdp sesijām sasaista RDP izkārtojumu ID ar XKB izkārtojumu; faili km-*.ini, uz kuriem sūta vecāki raksti, ir Xvnc ceļš. Krievu izkārtojums jau ir kā rdp_layout_ru=0x00000419; latviešu valodai pievienojiet rdp_layout_lv=0x00000426 sadaļā [default_rdp_layouts] un rdp_layout_lv=lv sadaļā [default_layouts_map], tad pārstartējiet.

Kad viss strādā, centieties tajā nedzīvot: katra stunda, ko darbvirsma pavada dīkā ar atvērtu pārlūku, ir atmiņa, kas neko nedara. Ja labprātāk gribat, lai to darbina kāds cits, mūsu inženieri šo risinājumu uztur mūsu pašu datu centrā Rīgā un ir sasniedzami visu diennakti caur IT atbalstu.

Gribi, lai to darām mēs?
VPS. NVMe virtuālie serveri, gatavi minūtes laikā.
Uzzināt vairāk

Gatavs sākt?

Palaid dažās minūtēs vai aprunājies ar inženieri par piemērotāko risinājumu.