VPS di Linux dengan antarmuka grafis: menjalankan server VNC di Ubuntu 18.04



Beberapa pengguna menyewa VPS Windows yang relatif murah untuk menjalankan Layanan Desktop Jarak Jauh. Hal yang sama dapat dilakukan di Linux tanpa menempatkan perangkat keras Anda sendiri di pusat data atau menyewa server khusus. Seseorang membutuhkan lingkungan grafis yang familiar untuk pengujian dan pengembangan, atau desktop jarak jauh dengan bandwidth yang lebar untuk bekerja dari perangkat seluler. Ada banyak kegunaan untuk Virtual Network Computing (VNC) berdasarkan protokol Remote FrameBuffer (RFB). Dalam artikel singkat, kami akan menunjukkan cara mengonfigurasinya di mesin virtual dengan hypervisor apa pun ..



Daftar Isi:



Memilih server VNC

Menginstal dan mengkonfigurasi

Memulai layanan melalui systemd

Menghubungkan ke desktop



Memilih server VNC



Layanan VNC dapat dibangun ke dalam sistem virtualisasi, sedangkan hypervisor akan menghubungkannya ke perangkat yang diemulasi dan tidak diperlukan konfigurasi tambahan. Opsi ini melibatkan overhead yang signifikan dan tidak didukung oleh semua penyedia - bahkan dalam implementasi yang tidak terlalu intensif sumber daya, ketika abstraksi yang disederhanakan (framebuffer) ditransfer ke mesin virtual alih-alih meniru perangkat grafis yang sebenarnya. Kadang-kadang server VNC akan mengikat ke server X yang sedang berjalan, tetapi metode ini lebih cocok untuk mengakses mesin fisik, sementara pada mesin virtual hal itu menimbulkan sejumlah kesulitan teknis. Cara termudah adalah menginstal server VNC dengan server X tertanam. Ini tidak memerlukan perangkat fisik (adaptor video, keyboard dan mouse) atau emulasinya menggunakan hypervisor, dan oleh karena itu cocok untuk semua jenis VPS.



Instalasi dan konfigurasi



Kami membutuhkan mesin virtual dengan Ubuntu Server 18.04 LTS dalam konfigurasi default. Ada beberapa server VNC dalam repositori standar distribusi ini: TightVNC , TigerVNC , x11vnc , dan lainnya. Kami memilih TigerVNC - garpu sebenarnya yang tidak didukung oleh pengembang TightVNC. Server lain dikonfigurasi dengan cara yang sama. Anda juga perlu memilih lingkungan desktop: menurut kami, XFCE akan menjadi pilihan yang optimal karena persyaratan yang relatif rendah untuk sumber daya komputasi. Mereka yang tertarik dapat menginstal DE atau WM lain: semuanya tergantung pada preferensi pribadi, tetapi pilihan perangkat lunak secara langsung memengaruhi kebutuhan RAM dan inti komputasi.



gambar




Menginstal lingkungan desktop dengan semua dependensi dilakukan dengan perintah berikut:



sudo apt-get install xfce4 xfce4-goodies xorg dbus-x11 x11-xserver-utils


Selanjutnya, Anda perlu menginstal server VNC:



sudo apt-get install tigervnc-standalone-server tigervnc-common


Menjalankannya sebagai root adalah ide yang buruk. Buat pengguna dan grup:



sudo adduser vnc






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 vnc sudo


Langkah selanjutnya adalah memulai server VNC dengan hak pengguna vnc untuk membuat sandi yang aman dan file konfigurasi di direktori ~ / .vnc /. Panjang kata sandi dapat dari 6 hingga 8 karakter (yang tambahan dipotong). Jika perlu, kata sandi hanya lihat juga disetel, mis. tanpa akses ke keyboard dan mouse. Perintah berikut dijalankan sebagai pengguna vnc:



su - vnc
vncserver -localhost no




Secara default, protokol RFB menggunakan rentang port TCP 5900 hingga 5906 - inilah yang disebut. port tampilan, masing-masing sesuai dengan layar server X. Dalam kasus ini, port dikaitkan dengan layar dari: 0 hingga: 6. Instance server VNC yang kami mulai mendengarkan di port 5901 (layar: 1). Instance lain dapat bekerja pada port lain dengan layar: 2 ,: 3, dll. Sebelum konfigurasi lebih lanjut, Anda perlu menghentikan server:



vncserver -kill :1


Perintah tersebut akan menampilkan sesuatu seperti pesan berikut: "Membunuh ID proses Xtigervnc 18105 ... berhasil!".



Ketika TigerVNC dimulai, ia menjalankan skrip ~ / .vnc / xstartup untuk mengatur parameter konfigurasi. Mari buat skrip kita sendiri, setelah sebelumnya menyimpan salinan cadangan dari yang sudah ada, jika ada:



mv ~/.vnc/xstartup ~/.vnc/xstartup.b
nano ~/.vnc/xstartup


Sesi lingkungan desktop XFCE dimulai dengan skrip xstartup berikut:



#!/bin/bash
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
xrdb $HOME/.Xresources
exec /usr/bin/startxfce4 &


Perintah xrdb diperlukan agar VNC dapat membaca file .Xresources di direktori home. Di sana pengguna dapat menentukan berbagai parameter desktop grafis: rendering font, warna terminal, tema kursor, dll. Skrip harus dibuat dapat dieksekusi:



chmod 755 ~/.vnc/xstartup


Ini melengkapi konfigurasi server VNC. Jika Anda menjalankannya dengan perintah vncserver -localhost no (atas nama pengguna vnc), Anda dapat terhubung dengan kata sandi yang ditentukan sebelumnya dan melihat gambar berikut:





Memulai layanan melalui systemd



Memulai server VNC secara manual tidak cocok untuk penggunaan pertempuran, jadi kami akan mengonfigurasi layanan sistem. Perintah dijalankan sebagai root (gunakan sudo). Pertama, mari buat file unit baru untuk server kita:



sudo nano /etc/systemd/system/vncserver@.service


Simbol @ dalam nama memungkinkan Anda memberikan argumen untuk mengkonfigurasi layanan. Dalam kasus kami, ini mengatur port tampilan VNC. File unit terdiri dari beberapa bagian:



[Unit]
Description=TigerVNC server
After=syslog.target network.target

[Service]
Type=simple
User=vnc 
Group=vnc 
WorkingDirectory=/home/vnc 
PIDFile=/home/vnc/.vnc/%H:%i.pid
ExecStartPre=-/usr/bin/vncserver -kill :%i > /dev/null 2>&1
ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x960 :%i
ExecStop=/usr/bin/vncserver -kill :%i

[Install]
WantedBy=multi-user.target


Maka Anda perlu memberi tahu systemd tentang tampilan file baru dan mengaktifkannya:



sudo systemctl daemon-reload
sudo systemctl enable vncserver@1.service


Angka 1 pada nama menunjukkan nomor layar.



Kami menghentikan server VNC, memulainya sebagai layanan dan memeriksa status:



#    vnc 
vncserver -kill :1


#   
sudo systemctl start vncserver@1
sudo systemctl status vncserver@1


Jika layanan berjalan, kita harus mendapatkan sesuatu seperti ini.





Koneksi desktop



Konfigurasi kami tidak menggunakan enkripsi, sehingga paket jaringan dapat dicegat oleh penyerang. Selain itu, kerentanan sering ditemukan di server VNC , jadi sebaiknya Anda tidak membukanya untuk akses dari Internet. Untuk menyambung dengan aman di komputer lokal, Anda perlu mengemas lalu lintas ke dalam terowongan SSH dan kemudian mengkonfigurasi klien VNC. Di Windows, Anda dapat menggunakan klien SSH grafis (misalnya PuTTY). Untuk keamanan, TigerVNC di server hanya mendengarkan localhost dan tidak langsung dapat diakses dari jaringan publik:




sudo netstat -ap |more




Di Linux, FreeBSD, OS X, dan sistem operasi serupa UNIX lainnya, terowongan dari komputer klien dilakukan menggunakan utilitas ssh (sshd harus dijalankan di server VNC):



ssh -L 5901:127.0.0.1:5901 -C -N -l vnc vnc_server_ip


Opsi -L mengikat port 5901 dari koneksi jarak jauh ke port 5901 di localhost. Opsi -C mengaktifkan kompresi, dan -N memberi tahu ssh untuk tidak menjalankan perintah jarak jauh. Opsi -l menentukan login untuk login jarak jauh.



Setelah mengkonfigurasi terowongan di komputer lokal, Anda perlu menjalankan klien VNC dan membuat koneksi ke host 127.0.0.1:5901 (localhost: 5901) menggunakan kata sandi yang ditetapkan sebelumnya untuk mengakses server VNC. Kami sekarang dapat berkomunikasi dengan aman melalui terowongan terenkripsi dengan lingkungan desktop grafis XFCE di VPS. Pada tangkapan layar, utilitas teratas sedang berjalan di emulator terminal untuk menunjukkan konsumsi sumber daya komputasi yang tidak signifikan oleh mesin virtual. Kemudian semuanya akan tergantung pada aplikasi pengguna.





Anda dapat menginstal dan mengkonfigurasi server VNC di Linux di hampir semua VPS. Ini tidak memerlukan konfigurasi yang mahal dan boros sumber daya dengan emulasi adaptor video atau pembelian lisensi perangkat lunak komersial. Selain opsi layanan sistem yang telah kami pertimbangkan, ada yang lain: luncurkan dalam mode daemon (melalui /etc/rc.local) saat boot sistem atau sesuai permintaan melalui inetd. Yang terakhir menarik untuk membuat konfigurasi multi-pengguna. Server super internet akan memulai server VNC dan mengaitkan klien dengannya, dan server VNC akan membuat layar baru dan memulai sesi. Untuk otentikasi di dalamnya, Anda dapat menggunakan manajer tampilan grafis (misalnya, LightDM ), dan setelah memutuskan klien, sesi akan ditutup dan semua program yang bekerja dengan layar dihentikan.






All Articles