
Dalam artikel sebelumnya, kita membahas menjalankan server VNC di semua jenis mesin virtual. Opsi ini memiliki banyak kelemahan, yang utama adalah persyaratan bandwidth saluran transmisi data yang tinggi. Hari ini kita akan mencoba menghubungkan ke desktop Linux grafis menggunakan RDP (Remote Desktop Protocol). Sistem VNC didasarkan pada transmisi array piksel menggunakan protokol RFB (Remote Framebuffer), sementara RDP memungkinkan pengiriman grafik primitif dan perintah tingkat tinggi yang lebih kompleks. Ini biasanya digunakan untuk mengatur Layanan Desktop Jarak Jauh di Windows, tetapi server untuk Linux juga tersedia.
Daftar Isi:
Menginstal lingkungan grafis
Server Russification dan
instalasi perangkat lunak Menginstal dan mengkonfigurasi server RDP
Mengkonfigurasi firewall
Menghubungkan ke server RDP
Manajer sesi dan sesi pengguna
Mengganti tata letak keyboard
Menginstal lingkungan grafis
Kami akan menggunakan mesin virtual yang menjalankan Ubuntu Server 18.04 LTS dengan dua inti pemrosesan, empat gigabyte RAM, dan dua puluh gigabyte hard disk drive (HDD). Konfigurasi yang lebih lemah kurang cocok untuk desktop grafis, meskipun itu tergantung pada tugas yang diselesaikan. Jangan lupa gunakan kode promo Habrahabr10 untuk mendapatkan diskon 10% saat memesan.

Menginstal lingkungan desktop dengan semua dependensi dilakukan dengan perintah berikut:
sudo apt-get install xfce4 xfce4-goodies xorg dbus-x11 x11-xserver-utils
Seperti pada kasus sebelumnya, kami memilih XFCE karena persyaratan komputasi yang relatif rendah.
Russification Server dan instalasi perangkat lunak
Seringkali, mesin virtual diterapkan hanya dengan lokalisasi bahasa Inggris. Di desktop, Anda mungkin perlu bahasa Rusia, yang tidak sulit disiapkan. Pertama, mari instal terjemahan untuk program sistem:
sudo apt-get install language-pack-ru
Mari kita siapkan pelokalan:
sudo update-locale LANG=ru_RU.UTF-8
Anda dapat memperoleh efek yang sama dengan mengedit / etc / default / locale secara manual.
Untuk melokalkan GNOME dan KDE, repositori berisi bahasa-pack-gnome-ru dan language-pack-kde-ru - Anda akan membutuhkannya jika Anda akan menggunakan program dari lingkungan desktop ini. Di XFCE, terjemahan diinstal bersama dengan aplikasi. Kemudian Anda dapat menginstal kamus:
#
sudo apt-get install hunspell hunspell-ru
# LibreOffice
sudo apt-get install mythes-ru
# - DICT
sudo apt-get install mueller7-dict
Selain itu, penginstalan terjemahan mungkin diperlukan untuk beberapa aplikasi:
# Firefox
sudo apt-get install firefox firefox-locale-ru
# Thunderbird
sudo apt-get install thunderbird thunderbird-locale-ru
# LibreOffice
sudo apt-get install libreoffice libreoffice-l10n-ru libreoffice-help-ru
Ini menyelesaikan persiapan lingkungan desktop, tetap mengkonfigurasi server RDP.
Menginstal dan mengkonfigurasi server RDP
Ada server Xrdp gratis di repositori Ubuntu, yang akan kami gunakan:
sudo apt-get install xrdp
Jika semuanya berjalan dengan baik, server akan mulai secara otomatis:
sudo systemctl status xrdp

Server Xrdp dimulai sebagai pengguna xrdp dan secara default mengambil sertifikat /etc/ssl/private/ssl-cert-snakeoil.key, yang dapat Anda ganti dengan milik Anda. Untuk membaca file, Anda perlu menambahkan pengguna ke grup ssl-cert:
sudo adduser xrdp ssl-cert
Pengaturan default dapat ditemukan di file / etc / default / xrdp, sedangkan semua file konfigurasi server lainnya ada di direktori / etc / xrdp. Parameter utama ada di file xrdp.ini, yang bisa dibiarkan tidak berubah. Konfigurasi tersebut terdokumentasi dengan baik, dan ada halaman manual yang sesuai di kit:
man xrdp.ini
man xrdp
Tetap hanya mengedit skrip /etc/xrdp/startwm.sh, yang dijalankan ketika sesi pengguna diinisialisasi. Pertama, mari buat salinan cadangan skrip dari distribusi:
sudo mv /etc/xrdp/startwm.sh /etc/xrdp/startwm.b
sudo nano /etc/xrdp/startwm.sh
Untuk memulai lingkungan desktop XFCE, Anda memerlukan skrip yang mirip dengan berikut ini:
#!/bin/sh
if [ -r /etc/default/locale ]; then
. /etc/default/locale
export LANG LANGUAGE
fi
exec /usr/bin/startxfce4
Harap diperhatikan: lebih baik menulis path lengkap ke file yang dapat dieksekusi dalam skrip - ini adalah kebiasaan yang baik. Mari membuat skrip dapat dieksekusi dan pengaturan server Xrdp dapat dianggap selesai:
sudo chmod 755 /etc/xrdp/startwm.sh
Kami memulai ulang server:
sudo systemctl restart xrdp
Konfigurasi firewall
Secara default, Xrdp mendengarkan pada port TCP 3389 di semua antarmuka. Bergantung pada konfigurasi server virtual, Anda mungkin perlu mengkonfigurasi firewall Netfilter. Di Linux ini biasanya dilakukan dengan menggunakan utilitas iptables, tetapi di Ubuntu lebih baik menggunakan ufw. Jika alamat IP klien diketahui, konfigurasi dilakukan dengan perintah berikut:
sudo ufw allow from IP_Address to any port 3389
Anda dapat mengizinkan koneksi dari IP apa pun sebagai berikut:
sudo ufw allow 3389
RDP mendukung enkripsi, tetapi mengekspos server Xrdp dari jaringan publik adalah ide yang buruk. Jika klien tidak memiliki IP tetap, server seharusnya hanya mendengarkan localhost untuk meningkatkan keamanan. Paling baik diakses melalui terowongan SSH, yang akan merutekan lalu lintas dengan aman dari komputer klien. Kami menggunakan pendekatan serupa di artikel sebelumnya untuk server VNC.
Menghubungkan ke Server RDP
Untuk bekerja dengan lingkungan desktop, lebih baik membuat pengguna tanpa hak istimewa yang terpisah:
sudo adduser rdpuser

Mari tambahkan pengguna ke grup sudo sehingga dia dapat menyelesaikan tugas terkait administrasi. Jika tidak ada kebutuhan seperti itu, Anda dapat melewati langkah ini:
sudo gpasswd -a rdpuser sudo
Anda dapat menyambung ke server menggunakan klien RDP apa pun, termasuk klien Windows Remote Desktop Services bawaan. Jika Xrdp mendengarkan di antarmuka eksternal, tidak diperlukan gerakan tambahan. Cukup menentukan alamat IP VPS, nama pengguna, dan kata sandi dalam pengaturan koneksi. Setelah terhubung, kita akan melihat sesuatu seperti ini:

Setelah pengaturan awal lingkungan desktop, kita akan mendapatkan desktop yang lengkap. Seperti yang Anda lihat, itu tidak menghabiskan begitu banyak sumber daya, meskipun selanjutnya semuanya akan tergantung pada aplikasi yang digunakan.

Jika server Xrdp hanya mendengarkan localhost, lalu lintas di komputer klien harus dimasukkan ke dalam terowongan SSH (sshd harus berjalan di VPS). Pada Windows, Anda dapat menggunakan klien SSH grafis (misalnya PuTTY), dan pada sistem UNIX, Anda memerlukan utilitas ssh:
ssh -L 3389:127.0.0.1:3389 -C -N -l rdpuser RDP_server_ip
Setelah menginisialisasi terowongan, klien RDP tidak akan lagi terhubung ke server jauh, tetapi ke host lokal.
Dengan perangkat seluler, ini lebih sulit: klien SSH yang mampu meningkatkan terowongan harus dibeli, sebagai tambahan, di iOS dan iPadOS, pekerjaan latar belakang aplikasi pihak ketiga sulit karena pengoptimalan energi yang terlalu baik. Di iPhone dan iPad, ini tidak akan berfungsi untuk menaikkan terowongan dalam aplikasi terpisah - Anda memerlukan aplikasi gabungan, yang dengan sendirinya dapat membuat koneksi RDP melalui SSH. Seperti, misalnya, Remoter Pro .
Manajer sesi dan sesi pengguna
Kemampuan multi-pengguna diterapkan langsung di server Xrdp dan tidak memerlukan konfigurasi tambahan. Setelah memulai layanan melalui systemd, satu proses berjalan dalam mode daemon, mendengarkan pada port 3389 dan berkomunikasi melalui localhost dengan manajer sesi.
ps aux |grep xrdp

sudo netstat -ap |grep xrdp

Manajer sesi biasanya tidak terlihat oleh pengguna, karena login dan kata sandi yang ditentukan dalam pengaturan klien ditransfer secara otomatis. Jika ini tidak terjadi atau kesalahan terjadi selama otentikasi, jendela login interaktif akan muncul sebagai ganti desktop.

Start otomatis dari manajer sesi terdaftar di file / etc / default / xrdp, dan konfigurasinya disimpan di /etc/xrdp/sesman.ini. Secara default, ini terlihat seperti ini:
[Globals]
ListenAddress=127.0.0.1
ListenPort=3350
EnableUserWindowManager=true
UserWindowManager=startwm.sh
DefaultWindowManager=startwm.sh
[Security]
AllowRootLogin=true
MaxLoginRetry=4
TerminalServerUsers=tsusers
TerminalServerAdmins=tsadmins
; When AlwaysGroupCheck=false access will be permitted
; if the group TerminalServerUsers is not defined.
AlwaysGroupCheck=false
[Sessions]
Anda tidak dapat meninggalkan apa pun di sini, Anda hanya perlu menonaktifkan login root (AllowRootLogin = false) Untuk setiap pengguna yang masuk ke sistem, proses xrdp terpisah diluncurkan: jika Anda memutuskan sambungan tanpa mengakhiri sesi, proses pengguna akan terus bekerja secara default, dan Anda dapat menyambung kembali ke sesi tersebut. Pengaturan dapat diubah di file /etc/xrdp/sesman.ini (bagian [Sessions]).
Mengganti tata letak keyboard
Dengan clipboard dua sisi, masalah biasanya tidak muncul, tetapi dengan tata letak keyboard Rusia, Anda harus sedikit bermain-main (bahasa Rusia harus sudah diinstal ). Mari edit pengaturan keyboard dari server Xrdp:
sudo nano /etc/xrdp/xrdp_keyboard.ini
Baris berikut harus ditambahkan ke akhir file konfigurasi:
[rdp_keyboard_ru]
keyboard_type=4
keyboard_type=7
keyboard_subtype=1
model=pc105
options=grp:alt_shift_toggle
rdp_layouts=default_rdp_layouts
layouts_map=layouts_map_ru
[layouts_map_ru]
rdp_layout_us=us,ru
rdp_layout_ru=us,ru
Tetap menyimpan file dan memulai ulang Xrdp:
sudo systemctl restart xrdp
Seperti yang Anda lihat, tidak sulit untuk mengatur server RDP pada VPS Linux, dan pada artikel sebelumnya kita telah membahas pengaturan VNC. Selain teknologi ini, ada opsi lain yang menarik: sistem X2Go menggunakan protokol NX 3 yang dimodifikasi. Kami akan membahasnya di publikasi berikutnya.
