Virtual Network Computing (VNC) adalah sistem berbagi desktop grafis yang memungkinkan Anda menggunakan keyboard dan mouse untuk mengontrol komputer lain dari jarak jauh

Panduan ini mencakup langkah-langkah yang diperlukan untuk menginstal dan mengkonfigurasi server VNC pada sistem CentOS 8. Kami juga akan menunjukkan kepada Anda cara terhubung dengan aman ke server VNC melalui SSH tunnel.

Prasyarat

Sebelum melanjutkan dengan tutorial ini, pastikan Anda masuk sebagai pengguna dengan hak istimewa sudo.

Install Desktop Environment

Secara umum, server tidak memiliki desktop environment yang diinstal. Jika mesin yang ingin Anda sambungkan tidak memiliki GUI, langkah pertama adalah menginstalnya. Kalau tidak, lewati langkah ini.

Jalankan perintah berikut untuk menginstal Gnome, desktop environment default di CentOS 8 pada mesin jarak jauh Anda:

sudo dnf groupinstall "Server with GUI"

Bergantung pada sistem Anda, mengunduh dan menginstal paket Gnome mungkin memerlukan waktu.

Install VNC Server

TigerVNC adalah server VNC open-source berkinerja tinggi yang dipelihara secara aktif. Kita akan menggunakan TigerVNC sebagai server pilihan VNC.

sudo dnf install tigervnc-server

Sekarang setelah VNC server diinstal, langkah selanjutnya adalah menjalankan perintah vncserver yang akan membuat konfigurasi awal dan mengatur kata sandi. Jangan gunakan sudo saat menjalankan perintah berikut:

vncserver

Anda akan diminta untuk memasukkan dan mengonfirmasi kata sandi dan apakah akan menetapkannya sebagai kata sandi view-only?. Jika Anda memilih untuk mengatur kata sandi view-only, user tidak akan dapat berinteraksi dengan instance VNC dengan mouse dan keyboard.

You will require a password to access your desktops.

Password:
Verify:
Would you like to enter a view-only password (y/n)? n
/usr/bin/xauth:  file /home/linuxid/.Xauthority does not exist

New 'server2.linuxid.net:1 (linuxid)' desktop at :1 on machine server2.linuxid.net

Starting applications specified in /etc/X11/Xvnc-session
Log file is /home/linuxid/.vnc/server2.linuxid.net:1.log

Pertama kali perintah vncserver dijalankan, vncserver akan membuat dan menyimpan file kata sandi di direktori ~/.vnc yang akan dibuat jika tidak ada.

Perhatikan :1 setelah hostname  di output di atas. Ini menunjukkan display port tampilan tempat VNC server berjalan. Dalam kasus kami, server berjalan pada port TCP 5901 (5900+1). Jika Anda membuat instance kedua, maka akan berjalan pada port yang tidak terpakai berikutnya, misalnya  :2, yang berarti server berjalan pada port 5902 (5900+2).

Yang penting untuk diingat adalah bahwa ketika bekerja dengan VNC server, :X adalah display port yang merujuk ke 5900+X.

Sebelum melanjutkan dengan langkah berikutnya, pertama hentikan instance VNC menggunakan perintah vncserver dengan opsi -kill dan nomor server sebagai argumen. Dalam kasus kami, server berjalan di port 5901 (:1), jadi untuk menghentikannya, jalankan:

vncserver -kill :1
Killing Xvnc process ID 19681

Konfigurasi Server VNC

Sekarang baik Gnome dan TigerVNC telah diinstal pada mesin CentOS jarak jauh, langkah selanjutnya adalah mengkonfigurasi TigerVNC untuk menggunakan Gnome. Server VNC menggunakan file ~/.vnc/xstartup untuk menjalankan aplikasi saat membuat desktop baru. Buka file:

vim ~/.vnc/xstartup

Dan edit sebagai berikut:

#!/bin/sh
[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
vncconfig -iconic &
dbus-launch --exit-with-session gnome-session &

Simpan dan tutup file. Script di atas dijalankan secara otomatis setiap kali Anda memulai atau restart server TigerVNC.

Jika Anda ingin memberikan opsi tambahan ke VNC server, buka file ~/.vnc /config dan tambahkan satu opsi per baris. Opsi yang paling umum tercantum dalam file. Batalkan komentar dan ubah sesuai keinginan Anda.

Berikut ini sebuah contoh:

# securitytypes=vncauth,tlsvnc
# desktop=sandbox
geometry=1920x1080
# localhost
# alwaysshared

Buat unit file Systemd

File unit memungkinkan Anda untuk memulai, menghentikan, dan memulai kembali layanan dengan mudah. Secara umum, lokasi terbaik untuk menyimpan unit file user adalah ~/.config/systemd/user. Pertama Buat direktori:

mkdir -p ~/.config/systemd/user

Salin file unit vncserver default:

cp /usr/lib/systemd/user/[email protected] ~/.config/systemd/user/

Beri tahu systemd bahwa ada unit file user baru:

systemctl --user daemon-reload

Mulai VNC service dan aktifkan saat boot:

systemctl --user enable vncserver@:1.service --now

Angka 1 setelah @: menentukan display port tempat VNC service akan listen. Kami menggunakan 1, yang berarti bahwa VNC server akan listen pada port 5901 seperti yang kita bahas di bagian sebelumnya.

Aktifkan lingering agar layanan pengguna mulai saat boot dan terus berjalan ketika pengguna tidak masuk:

loginctl enable-linger

Pastikan layanan berhasil dimulai dengan:

systemctl --user status vncserver@:1.service
● vncserver@:1.service - Remote desktop service (VNC)
   Loaded: loaded (/home/linuxid/.config/systemd/user/[email protected]; enabled; vendor preset: enabled)
   Active: active (running) since Thu 2020-01-30 22:14:08 UTC; 2s ago
  Process: 20813 ExecStart=/usr/bin/vncserver :1 (code=exited, status=0/SUCCESS)
  Process: 20807 ExecStartPre=/bin/sh -c /usr/bin/vncserver -kill :1 > /dev/null 2>&1 || : (code=exited, status=0/SUCCESS)
   CGroup: /user.slice/user-1000.slice/[email protected]/vncserver.slice/vncserver@:1.service
  ...

Cara Terhubung ke VNC server

VNC bukan protokol terenkripsi dan cukup rentan terhadap packet sniffing. Pendekatan yang disarankan adalah dengan membuat SSH tunnel yang akan meneruskan lalu lintas dengan aman dari mesin lokal Anda pada port 5901 ke server pada port yang sama.

Cara Setup SSH Tunneling di Linux dan macOS

Jika Anda menjalankan Linux, macOS atau sistem operasi berbasis Unix lainnya, Anda dapat dengan mudah membuat SSH tunnel dengan perintah berikut:

ssh -L 5901:127.0.0.1:5901 -N -f -l username remote_server_ip

Anda akan diminta memasukkan kata sandi user.

Jangan lupa mengganti username  dan server_ip_address dengan nama user dan alamat IP server Anda.

Cara Setup SSH Tunneling di Windows

Jika Anda menjalankan Windows, Anda dapat mengatur SSH  Tunneling menggunakan PuTTY SSH client.

Buka Putty dan masukkan Alamat IP server Anda di bidang Host name or IP address.

vnc putty

Di bawah menu Connection , klik icon + di SSH dan pilih Tunnels. Masukkan port server VNC (5901) di field Source Port dan masukkan server_ip_address:5901 di field Destination dan klik tombol Add seperti yang ditunjukkan pada gambar di bawah:

vnc ssh tunnel putty

Kembali ke halaman Session untuk menyimpan pengaturan sehingga Anda tidak perlu memasukkannya setiap kali. Sekarang yang perlu Anda lakukan adalah memilih sesi yang disimpan dan login ke remote server dengan mengklik tombol Open.

Terhubung ke Server menggunakan Vncviewer

Untuk terhubung ke Server jarak jauh, buka VNC viewer Anda dan masukkan localhost:5901.

Anda dapat menggunakan viewer apa pun seperti TigerVNC, TightVNC, RealVNC, UltraVNC Vinagre, dan VNC Viewer untuk Google Chrome.

Untuk tutorial ini kita akan menggunakan TigerVNC:

vnc viewer

Masukkan kata sandi saat diminta, dan Anda akan melihat desktop Gnome default yang terlihat seperti ini:

vnc desktop

Pada poin ini, Anda sekarang dapat mulai bekerja pada remote  desktop dari mesin lokal Anda menggunakan keyboard dan mouse.

Kesimpulan

Kami telah menunjukkan kepada Anda cara menyiapkan VNC server dan terhubung ke mesin CentOS 8 jarak jauh.

Untuk memulai tampilan untuk lebih dari satu pengguna, ulangi langkah yang sama. Buat konfigurasi awal, atur kata sandi menggunakan perintah vncserver, dan buat file layanan baru menggunakan port yang berbeda.